web-dev-qa-db-ja.com

Android:UnknownHostException

Android SDK 2.2、エミュレータを使用してアプリケーションをテストしています。HTTPポストを送信したいです。すると、UnknownHostExceptionが発生します。必要な権限を設定しました。
<uses-permission Android:name="Android.permission.INTERNET" />
manifest.xml内。また、エミュレータでブラウザを開き、問題なくURLに移動できます。

ここに私のコードがあります:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost( uri );
HttpResponse response = null;
try
{
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
2 );
nameValuePairs.add( new BasicNameValuePair( "id", "edit-name" ) );
nameValuePairs
.add( new BasicNameValuePair( "stringdata", userName ) );
httppost.setEntity( new UrlEncodedFormEntity( nameValuePairs ) );

// Execute HTTP Post Request
response = httpclient.execute( httppost );
// Log.i( "HttpManager:", "======> response: "
// + response.getEntity().getContent() );

}
catch (ClientProtocolException e)
{
Log.e( "HttpManager", "ClientProtocolException thrown" + e );
}
catch (IOException e)
{
Log.e( "HttpManager", "IOException thrown" + e );
}
68
anisbet

OK、私はかなり不満を感じています...インターネット許可タグは、アプリケーションタグではなく、マニフェストタグの子です。シーシュ!

116
anisbet

他の人の考慮のために、私はこの問題に出くわし、Googleが私を見つけました。 anisbetが述べたように、許可タグを再確認したところ、正しい場所にありました。

私は最終的にブラウザに組み込まれたAndroidを起動し、WebサーバーとGoogle.comから同じ応答を得ていました(コンピューター自体は問題ありませんでした)。 Androidエミュレーターを終了して再起動しました。最初の試行に取り組みました。

コードを確認したら、エミュレータを再起動する価値があるかもしれません。エミュレータにとっては公平なことですが、これを行った直後に多数のプログラムがクラッシュしたため、おそらく私のコンピューターで何か他のことが起こっていました。それでも、これは私にとって膨大な時間を無駄にしました。

幸運を祈る!

51
Frank V

インターネットに接続していることを確認してください。それは、インターネットに接続していない携帯電話でテストしているのを忘れたときに私に起こったことです。

33
igo

あなたがそれを解決したのは、次のようにマニフェストの終了タグの直前に許可を置くことでした:

<uses-permission Android:name="Android.permission.INTERNET" />
</manifest>
17
Moritz

エミュレータでアプリを実行しているときに時々起こります。エミュレータを再起動するだけで問題が解決します。それは私のために働いた!

8
java dev

上記のいずれも機能しない場合は、一歩後退して、デバイスまたはエミュレーターがブラウザーを開いて実際にインターネットにアクセスできることを確認してください。

5
diadyne

私は同じ問題に出くわしました。 Androidマニフェストファイルに正しい権限があり、URLも正しいです。Webブラウザで応答があります。IDE、エミュレータを再起動しましたが、問題を修正しませんでした。 。だから私はAVDマネージャーを使用してAVDを削除し、エミュレーターを起動して動作し始めました。

2
Vijay

最後のチェックは、ドメイン名が有効なドメインであることです。ドメインにアンダースコアがあると無効になり、不明なホスト例外がスローされます。

2
tlunter

MinSdkVersionが4に設定されているアプリをテストすると、G1で実行しようとしていたときに、同様の問題が発生しました。 3に変更することで問題は解決しました。

2
metric152

もう1つ、インターネット自体が機能していなかったことが判明しました。これらのスイッチを使用してコマンドラインからエミュレータを起動すると、修正されました:emulator -avd your_avd_name -dns-server 8.8.8.8

WiFiに接続したときにこのエラーが表示されました。 WiFiをオフにするとすぐに動作しました。 UnknownHostExceptionは、このAndroidバグ:

http://code.google.com/p/Android/issues/detail?id=67324

0
l33t

VPNを開くと、「不明なホストの例外」が発生する場合があります

0
Francis Shi

エミュレーターを使用しているときに同じ問題が発生しました。ラップトップのwifiを変更したため、エミュレーターのwifiを再起動すると問題が解決しました。

0
Sana

エミュレータを使用していない場合もこれを確認してください

今日は同じ問題が発生しました。エミュレータを使用していませんが、テスト用にモバイルでUSBデバッグを有効にしました。

モバイルでデータを有効にしなかったので、有効にすると、UnknownHostExceptionを取得しました。

0
Saravana