如何获取头信息?(Java,HttpClient 4.X)

10

当我执行以下操作时:

Header[] h = first.getAllHeaders();
返回的`Header`数组是空的。有什么想法吗?下面是我的代码。
HttpClient httpclient = new DefaultHttpClient();

CookieStore cookieStore = new BasicCookieStore();

// Create local HTTP context
HttpContext localContext = new BasicHttpContext();
// Bind custom cookie store to the local context
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);


HttpGet first = new HttpGet("http://vk.com");
HttpResponse response = httpclient.execute(first, localContext);

InputStream instream = response.getEntity().getContent();
StringBuilder sb = new StringBuilder();
BufferedReader r = new BufferedReader(new InputStreamReader(instream, Charset.forName("windows-1251")));
for (String line = r.readLine(); line != null; line = r.readLine()) {
    sb.append(line);
}
Header[] h = first.getAllHeaders();
instream.close();
String s = sb.toString();
1个回答

15

您正在对first进行getAllHeaders()调用,其中first是您的HttpGet对象。 您想像这样对response对象调用getAllHeaders()

Header[] h = response.getAllHeaders();

您也可以检查响应的状态代码,并相应地做出响应,如下所示:

int statusCode = response.getStatusLine().getStatusCode();
Logger.d("Response returned status code " + statusCode);

if (HttpStatus.SC_OK == statusCode) {
    // TODO: handle 200 OK
} else if (HttpStatus.SC_NOT_FOUND == statusCode) { 
    // TODO: handle 404 Not Found
} else { 
    // TODO: handle other codes here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接