Android ApacheHttp获取200以外的状态代码

时间:2013-11-13 12:33:50

标签: android apache http http-status-codes

我需要在给定的网站中找到损坏的链接并显示其状态代码。我可以检查网站是否失败,因为会抛出异常。但我无法获取状态代码。我已经检查了这些建议: 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。

1 个答案:

答案 0 :(得分:1)

试试这个

HttpResponse httpResp = client.execute(response);
int code = httpResp.getStatusLine().getStatusCode();
相关问题