0

ここでデータをURLに投稿し、そこから応答を取得していますが、コードを配置してnoHttpResponse例外を取得しています

TextView xx = (TextView) findViewById(R.id.xx);
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(
            "http://motinfo.direct.gov.uk/internet/jsp/ECHID-Internet-History-Request.jsp");
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
        nameValuePairs
                .add(new BasicNameValuePair(
                        "Vehicle registration mark from number plate",
                        "123456789"));
        nameValuePairs.add(new BasicNameValuePair("MOT test number",
                "AP3398"));
        nameValuePairs.add(new BasicNameValuePair("MOT test number",
                "000000"));

        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = client.execute(post);

        String line = "";
        if (response != null) {
            System.out
                    .println("***********************************************************");
            xx.setText(EntityUtils.toString(response.getEntity()));

        }

    } catch (IOException e) {
        e.printStackTrace();
    }

ここでlogcatを追加

   09-11 12:40:22.086: I/InputDispatcher(61): Application is not responding: AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}.  640698.7ms since event, 640698.2ms since wait started
09-11 12:40:22.086: I/WindowManager(61): Input event dispatching timed out sending to application AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}
09-11 12:40:27.117: I/InputDispatcher(61): Application is not responding: AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}.  645729.5ms since event, 645728.9ms since wait started
09-11 12:40:27.117: I/WindowManager(61): Input event dispatching timed out sending to application AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}
09-11 12:40:32.165: I/InputDispatcher(61): Application is not responding: AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}.  650777.7ms since event, 650777.1ms since wait started
09-11 12:40:32.165: I/WindowManager(61): Input event dispatching timed out sending to application AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}
09-11 12:40:37.182: I/InputDispatcher(61): Application is not responding: AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}.  655793.8ms since event, 655793.3ms since wait started
09-11 12:40:37.183: I/WindowManager(61): Input event dispatching timed out sending to application AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}
09-11 12:40:42.202: I/InputDispatcher(61): Application is not responding: AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}.  660814.3ms since event, 660813.7ms since wait started
09-11 12:40:42.202: I/WindowManager(61): Input event dispatching timed out sending to application AppWindowToken{406a9208 token=HistoryRecord{4064bf48 com.example.xxx/.MainActivity}}
4

2 に答える 2

0

http リクエストを実行するコードをメソッドに抽出し、別のスレッドで実行する必要があります。たとえば、AsyncTaskまたはを使用しIntentServiceます。

Android 3.0 以降では、UI スレッドからネットワーク操作を実行できなくなりました。それ以外の場合は aNetworkOnMainThreadExceptionがスローされます。

Android 2.x の場合、その例外は発生しませんが、http 操作の実行に時間がかかりすぎて、結果として UI スレッドをブロックし、ANR (アプリケーションが応答していない) エラーが発生する可能性があります。 .

于 2013-09-11T07:21:21.980 に答える
0

あなたのログを見ると、応答を待っているアプリをブロックする POST 要求を送信しているため、UI スレッドがブロックされていることがわかります。

すべての http 要求にAsyncTaskを使用します。

于 2013-09-11T07:22:50.800 に答える