如何删除apache commons httpClient上的User-Agent头?

时间:2011-11-30 18:35:33

标签: java httpclient

我正在使用apache commons httpClient 3.0.1,默认情况下它将用户代理设置为Jakarta Commons-HttpClient / 3.0,我知道设置一个自定义值,但我现在需要它来完全删除User-Agent头从请求中,我知道该值来自DefaultHttpParamsFactory.java

有没有办法改变那家工厂的行为?或指定我自己的工厂

1 个答案:

答案 0 :(得分:2)

一种解决方案是对方法进行子类化并覆盖addUserAgentRequestHeader方法。像这样:

public class NoUserAgentGetMethod extends GetMethod {

    public NoUserAgentGetMethod(String uri) {
        super(uri);
    }

    @Override
    protected void addUserAgentRequestHeader(
            HttpState state, HttpConnection connection) {
        // do nothing
    }

}

正如您所注意到的,您只能更改用户代理值,但不能通过修改参数来完全删除它。这是因为如果没有提供用户代理值作为参数,HttpMethodBase类使用"Jakarta Commons-HttpClient"作为硬编码默认值。

请注意,正如上面评论中所述,切换到新HttpClient项目的更新Apache HttpComponents代码库将是一个好主意。