使用apache httpclient 4显示请求标头时出现问题

Pie*_*let 3 java http httpclient

我一直在尝试使用HttpClient 4检索由HttpMethod发送的标头,但没有任何成功......

这是我的代码:

HttpClient httpClient = new DefaultHttpClient();
HttpParams httpParams = httpClient.getParams();
HttpGet httpGet = new HttpGet("http://www.google.fr");

HttpResponse response = httpClient.execute(httpGet);

log.info("*** Request headers ***");
Header[] requestHeaders = httpGet.getAllHeaders();
for(Header header : requestHeaders) {
    log.info(header.toString());
}
log.info("***********************");


log.info("*** reponse ***");
log.info(response.getStatusLine());
Header[] headers = response.getAllHeaders();
for(Header header : headers) {
    log.info(header.toString());
}
Run Code Online (Sandbox Code Playgroud)

但结果是:

00:27:57,368 INFO   - *** Request headers ***

00:27:57,368 INFO   - ***********************

00:27:57,368 INFO   - *** reponse ***

00:27:57,368 INFO   - HTTP/1.1 200 OK

00:27:57,368 INFO   - Date: Sun, 15 Aug 2010 22:28:09 GMT

00:27:57,368 INFO   - Expires: -1

00:27:57,368 INFO   - Cache-Control: private, max-age=0

00:27:57,368 INFO   - Content-Type: text/html; charset=ISO-8859-1

00:27:57,368 INFO   - Set-Cookie: 

[..]
Run Code Online (Sandbox Code Playgroud)

Aka的响应头很好,但不是请求的.(如果我在execute语句之前移动日志请求头块,则结果相同).

(并且不,我不想简单地看到它们,因此将日志级别设置为调试是不可接受的)

有人可以帮忙吗?

小智 8

要获取包括HTTPclient设置的所有标头,请使用
HttpCoreContext.该类允许读出所有标题.

HttpClient client = HttpClients.createDefault();
HttpCoreContext localContext = new HttpCoreContext();
HttpResponse response = client.execute(request,localContext);

Header[] headers = localContext.getRequest().getAllHeaders();
for (Header header : headers) {
   System.out.println(header.toString());
}
Run Code Online (Sandbox Code Playgroud)