2011-07-24 18 views
1

私はコントロールがhttpclient.execute(httppost);になったときに例外をスローするコードAndroidのMySQLの接続

try{ 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://127.0.0.1/mytable.php"); 
    // HttpPost httppost = new HttpPost("http://localhost/mytable.php"); 
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    HttpResponse response = httpclient.execute(httppost); 
    HttpEntity entity = response.getEntity(); 
    is = entity.getContent(); 
}catch(Exception e){ 
    Log.e("log_tag", "Error in http connection"+e.toString()); 
} 

の下に使用してPHP-MySQLで接続しようとしています:

org.apache.http.conn.HttpHostConnectException: Connection to http://127.0.0.1 refused 

私も私のAndroidManifestに<uses-permission android:name="android.permission.INTERNET" />を追加します。 xmlファイル。

ブラウザから直接phpファイルをテストするとうまくいきます。助言がありますか?エミュレータから

答えて

6

、ILあなたは次のIPアドレスを使用する必要があり、物理コンピュータにアクセスしたい:

10.0.2.2 

あなたが使用したもの、127.0.0.1、あなたのコードが実行される内部のマシンにポイント - つまりエミュレータ自体です。
AndroidエミュレータでHTTPサーバを実行していないため、アプリケーションに接続できません。エラーメッセージが表示されます。


の詳細情報については、マニュアルの以下のセクションをお読みください:Network Address Space

+0

ジンクス - しかし、あなたの答えは良いです。 – Nick

+0

こんにちは。今私はjava.net.SocketExceptionに直面している:操作は、同じメソッドからタイムアウトHttpResponse応答= httpclient.execute(httppost);私はまたタイムアウトの限界を設定していますpublic static final int HTTP_TIMEOUT = 90 * 1000; mHttpClient = new DefaultHttpClient(); 最終的なHttpParams params = mHttpClient.getParams(); HttpConnectionParams.setConnectionTimeout(params、HTTP_TIMEOUT); HttpConnectionParams.setSoTimeout(params、HTTP_TIMEOUT); ConnManagerParams.setTimeout(params、HTTP_TIMEOUT); – aftab

+0

私はSamsung Galaxy GT 190を使用しています。上記のコードをテストするには – aftab

1

127.0.0.1はlocalhostを、現在のデバイスです。お使いのコンピュータでは、お使いのコンピュータを参照していますが、デバイスまたはエミュレータではそのデバイスを参照しています。

エミュレータで実行しているときにコンピュータのローカルホストを参照する方法については、このドキュメントを参照してください。また、127.0.0.1をコンピュータの実際のIPアドレスに変更することもできます。

http://developer.android.com/resources/faq/commontasks.html#localhostalias