#java #httpclient
#java #httpclient
Вопрос:
Когда я делаю:
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:
Вы вызываете getAllHeaders()
на first
, который является вашим объектом 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
}