0

特定の Web サイトで壊れたリンクを見つけて、そのステータス コードを表示する必要があります。例外がスローされるため、Web サイトが失敗するかどうかを確認できます。しかし、ステータスコードを取得できません。私はすでにこれらの提案を確認しました: Android code after httpclient.execute(httpget) does not get run in try (using AsyncTask) HttpClient get status code

AsyncTask を実行します。

ここに私の AsyncTask 変数があります:

private class WebPageDownloadTask extends AsyncTask<String, Void, String> {

        ProgressDialog pDialog;
        int statusCode;
        HttpResponse execute;

これが私のdoInBackgroundです:

@Override
            protected String doInBackground(String... urls) {
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(urls[0]);
            String response = "";
            try {
                execute = client.execute(httpGet);
                statusCode = execute.getStatusLine().getStatusCode();
                Log.d("test", statusCode + "");
                InputStream content = execute.getEntity().getContent();
                BufferedReader buffer = new BufferedReader(
                        new InputStreamReader(content));
                String s = "";
                while ((s = buffer.readLine()) != null) {
                    response += s;
                }
            } catch (HttpResponseException e) {
                e.printStackTrace();
                statusCode = execute.getStatusLine().getStatusCode();
                Log.d("test", statusCode + "");
            } catch (IOException e) {
                e.printStackTrace();
                statusCode = execute.getStatusLine().getStatusCode();
                Log.d("test", statusCode + "");
            }
            return response;
        }

間違ったインターネット アドレスを指定すると、execute.getStatusLine().getStatusCode() が nullPointerException をスローします。

4

1 に答える 1