我需要在给定的网站中找到损坏的链接并显示其状态代码。我可以检查网站是否失败,因为会抛出异常。但我无法获取状态代码。我已经检查了这些建议: Android code after httpclient.execute(httpget) doesn't 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;
}
如果我提供错误的互联网地址,执行.getStatusLine()。getStatusCode()会抛出nullPointerException。
答案 0 :(得分:1)
试试这个
HttpResponse httpResp = client.execute(response);
int code = httpResp.getStatusLine().getStatusCode();