Как удалить заголовок User-Agent на Apache Commons httpClient? - PullRequest
2 голосов
/ 30 ноября 2011

Я использую Apache Commons httpClient 3.0.1, и по умолчанию он устанавливает в качестве агента пользователя Jakarta Commons-HttpClient / 3.0, я знаю, чтобы установить пользовательское значение, но теперь мне нужно его, чтобы полностью удалить заголовок User-Agent. из запроса я знаю, что значение исходит из DefaultHttpParamsFactory.java

Есть ли способ изменить поведение этой фабрики? или указать мою собственную фабрику

1 Ответ

2 голосов
/ 30 ноября 2011

Одним из решений является создание подкласса метода и переопределение метода 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 будет хорошей идеей в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...