2011-12-13 15 views
2

私はアンドロイドアプリケーション(エミュレータで)からWebサーバー(PHPページ)にデータを送信しようとしています。まず、エミュレータでこのプログラムを試してみましたが、正常に動作していました。その後、電話でこのプログラムを試しましたが、例外が発生しました:タイムアウト例外(AndroidからPHPページへのデータ送信)

- > IO例外:操作がタイムアウトしました。私のコードの

一方の部分:

HttpClient httpclient = new DefaultHttpClient(); 

HttpPost httppost = new HttpPost("http://192.168.1.33:90/takeDatas.php"); 
try {     
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
    nameValuePairs.add(new BasicNameValuePair("enlem", latitude)); 
    nameValuePairs.add(new BasicNameValuePair("boylam", longitude)); 
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    httpclient.execute(httppost); 

} catch (ClientProtocolException e) { 
    Toast.makeText(ReportLocationActivity.this, "Client protokol exception ", Toast.LENGTH_LONG).show(); 
} catch (IOException e) { 
    Toast.makeText(ReportLocationActivity.this, "IO exception "+e.getMessage(), Toast.LENGTH_LONG).show(); 
} 

私はあなたが私を助けることを願っています。 ありがとうございます。

+0

携帯電話でデータを受信して​​います – zode64

+0

いいえ、この例外のみが表示されます。 – iremce

+0

あなたのウェブサーバがマシン上のポート90で正しくリッスンしていることを確認しましたか? – Squonk

答えて

1

10.0.2.2は、エミュレータがホストマシンに指定するIPです。

一般に、10.x.x.xはprivate IP blockの一部です。

したがって、エミュレータが実行されているマシンと同じマシンにサーバーをホストする必要がありますか?それは私がエミュレータの内部でそれを見ることができる唯一の方法です。

とにかく場合は、アプリケーションがサーバーの実際のIPを必要とし、あなたはそれがあなたのネットワーク外で仕事をしたい場合、あなたは(はあなたhereを見つける。)あなたのパブリックIPが必要になりますし、ポート90のセットアップポートフォワーディングルータを持っている。 This siteは恐ろしいほど完全にアドバイスされていますが、ルータ固有の指示が大量に集まっています。

+1

@iremceは静的IPではなくローカルホストを使用しています。静的IPを取得できない場合は、dyn-dns.comなどの動的IPサービスを使用します。 – Ozzy

関連する問題