HTTP-ответ клиента Apache для обработки кода состояния http 100 - PullRequest
3 голосов
/ 31 августа 2011

Я использую клиент Apache httpdefault и выполняю функцию post, как показано ниже

HttpResponse imToken = httpClient.execute(httpPostIM);

получен ответ

HTTP/1.1 100 Continue
Connection: keep-alive

с последующим:

HTTP/1.1 200 OK
Date: Tue, 30 Aug 2011 19:11:35 GMT

Как нам справиться с этим со стороны клиента ??

1 Ответ

3 голосов
/ 31 августа 2011

Вот определение ответа 100 от w3 и вот хороший пример того, как выглядит ответ .Цитата:

Клиент ДОЛЖЕН продолжить свой запрос.Этот промежуточный ответ используется для информирования клиента о том, что начальная часть запроса была получена и еще не была отклонена сервером.Клиент ДОЛЖЕН продолжить, отправив оставшуюся часть запроса или, если запрос уже выполнен, игнорировать этот ответ.Сервер ДОЛЖЕН отправить окончательный ответ после завершения запроса.См. Раздел 8.2.3 для подробного обсуждения использования и обработки этого кода состояния.

Так что, если ваш клиент уже отправил весь запрос, ему следует просто подождать, пока сервер не выдаст 200 или другой «окончательный» ответ.

Согласно коду Apache HttpClient вам не нужно ничего делать, потому что клиент игнорирует все коды ответа 1XX и продолжает искать окончательный ответ,Это из commons-httpclient-3.1 в классе HttpMethodBase:

if ((status >= 100) && (status < 200)) {
    if (LOG.isInfoEnabled()) {
        LOG.info("Discarding unexpected response: " +
            this.statusLine.toString()); 
    }
    this.statusLine = null;
}

Если вы не видите такого поведения, то, возможно, вам нужно увеличить время ожидания клиента?Может быть, он не ждет достаточно долго?

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