特定の 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 をスローします。