我使用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代码库将是一个好主意。