2011-09-14 11 views
0

私はPHPデータベースからMySQLデータベースからデータを取得しようとしています。 私のコードは次のとおりです。 `Android Httpget time out

  HttpClient httpclient = new DefaultHttpClient(); 

      HttpGet httpget = new HttpGet("http://example.com/fscript.php"); 
      HttpResponse response= null; 
      System.out.println(httpget.toString()); 
      try{ 
       response= httpclient.execute(httpget); 
      }catch(Exception e){ 
       e.printStackTrace(); 
      } 

と私はいつもLogCatにタイムアウトを取得し、のStackTraceで:

java.net.SocketException: The operation timed out 

私は同じコードが、指してhttp://10.0.2.2:90/fscript.phpに、私が持っているサーバーを使用する場合私の開発マシンでは正常に動作しているので、リモートサーバに関連すると思います。 そして、私はブラウザにアドレスを書き込むときに、私のスクリプトが返すjson文字列を返します。したがって、問題はPHPではないと思います。 私のマニフェストには、アプリケーションのインターネットアクセス許可がありますが、何か別のものが必要ですか? これは、Androidサーバーからの呼び出しを受け入れるためにWebサーバーで設定する必要があるものですか?

ちょっと推測してもらえれば助かります。

答えて

1

可能重複答え

いくつかの回は、あなたのサーバが応答するにはあまりにも長い間を取っているので、これが起こっています。実際には、これはネットワークの速度が遅いために起こる可能性もあります。そのため、完全に制御できません。あなたはHttpClientを使用していた場合は、タイムアウト時間を増やすことができます:

java.net.socketexception: The operation timed out problem in android?

+0

申し訳ありません重複している場合は、タイムアウトを延長して問題が解決したかどうかをお知らせします。ありがとう –

0

あなたのウェブサーバは、通話がAndroidデバイスからのものであることをあまり気にしませんでした。それは、単にHTTPリクエストが入ってくるのを見て、それに応じて処理します。あなたのAndroid搭載端末が、実際には最初に非ローカルアドレスに手を差し伸べることができるかどうか調べてみましょう。例えばファイアウォールが要求をブロックしている可能性があります。これがAndroidエミュレータにある場合は、ネットワークブリッジが正しく設定されていることを確認してください。

+0

実際にエミュレータです、私はあなたのヒントを確認します、ありがとう。 –

0

私はここでゆるやかな言い回しを使用しています:10.0.2.2はあなたのマシンで127.0.0.1を指すAndroidのlocalhostです。したがって、スクリプトがhttp://127.0.0.1:90/fscript.phpから操作されている場合は、Androidのhttp://10.0.2.2:90/fscript.phpに表示されるはずです。

関連する問題