2012-04-29 11 views
1

httpリクエストを送信するためのサンプルコードですが、それは失敗します。LogCatに表示されるエラーログはこちらhttp://pastebin.com/56AL8Dxu マニフェストに<uses-permission android:name="android.permission.INTERNET"></uses-permission>を追加しました。 ?本当にアンドロイドでの単純なHTTP要求を作成するのは難しい、私はAndroidの開発を学習ネットの背景からだということを.isICSのAndroid HTTPRequestが失敗します:(

void testHTTP() 
{ 
    HttpClient httpClient = new DefaultHttpClient(); 

    HttpUriRequest request = new HttpPost("http://www.google.com"); 

    try { 
    HttpResponse response = httpClient.execute(request); 

    //System.out.println("response protocol version: " + response.getProtocolVersion()); 
    } catch (ClientProtocolException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 

} 

答えて

5

Logcatログで述べたように:。

4月29日19: 59:53.072:E/AndroidRuntime(546):android.os.NetworkOnMainThreadExceptio n

testHTTP()を実行します。これにはメインスレッドでのネットワーク接続が含まれますが、これは許可されていません。バックグラウンドスレッドに移動するか、AsyncTaskを使用してください。

+0

これは、http Web要求が常にバックグラウンドスレッドで実行され、メインスレッドではなく実行される必要があることを意味します。 – NoobDeveloper

+0

はい、これは一般的なUIプログラミングの非常に一般的な概念です。重い処理タスク(さらには、UI以外の関連タスク)はバックグラウンドで実行する必要があります。 – MByD

+0

@BinyaminSharetあなたは重い持ち上げはバックグラウンドスレッドで行うべきですが、あなたはUIスレッドでHttp Requestをうまくやることができます。 –

1

[OK]をBinyamin Sharetが正しい、私は、アプリケーションがそのメインスレッド上のネットワーク操作を実行しようとしたときにスローされる例外Androidのドキュメントから

を引用します。

これは、Honeycomb SDK(3.0)以上をターゲットとするアプリケーションでのみスローされます。以前のバージョンのSDKを対象としたアプリケーションでは、メインイベントループスレッドでネットワーキングを行うことが許可されていますが、あまり推奨されません。 「応答性のための設計」の文書を参照してください。

+0

3.0以上の場合にのみご利用いただきありがとうございます。 – NoobDeveloper

関連する問題