我正在使用apache commons httpClient 3.0.1,默认情况下它将用户代理设置为Jakarta Commons-HttpClient / 3.0,我知道设置一个自定义值,但我现在需要它来完全删除User-Agent头从请求中,我知道该值来自DefaultHttpParamsFactory.java
有没有办法改变那家工厂的行为?或指定我自己的工厂
答案 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代码库将是一个好主意。