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



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

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

一种解决方案是子类化该方法并覆盖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"作为硬编码的默认值,如果没有提供用户代理值作为参数。

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

最新更新