httpclient 4.3 自定义 header问题

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
        cm.setMaxTotal(MAX_CONNECTIONS);
        cm.setDefaultMaxPerRoute(MAX_CONNECTIONS);
        httpClient = HttpClients.custom()
                .setConnectionManager(cm)
                .setDefaultHeaders(defaultHeader())
                .build();

private List<Header> defaultHeader() {
    ArrayList<Header> headers = new ArrayList<Header>();
    Header header = new BasicHeader(HttpHeaders.USER_AGENT, UserAgent);
    headers.add(header);
    if (!StringUtils.isEmpty(referer)) {
        headers.add(new BasicHeader(HttpHeaders.REFERER, referer));
    }
    if (!StringUtils.isEmpty(cookie)) {
        headers.add(new BasicHeader("Cookie", cookie));
    }
    return headers;
}

请求PHP返回的数据

[HTTP_CONNECTION] => Keep-Alive
[HTTP_USER_AGENT] => Apache-HttpClient/4.3.3 (java 1.5)

怎么header 中的 USER_AGENT 还是默认的呢?

如果在这里设置header 就没问题
HttpGet request = new HttpGet(url);
request.addHeader(HttpHeaders.USER_AGENT, UserAgent);

阅读 15.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进