2011-05-01 35 views
9

当我做:如何获取标题? (Java中,HttpClient的4.X)

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(); 

回答

13

你在firstgetAllHeaders(),这是你的HTTPGET对象。你想打电话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 
}