Как мне подсчитать количество 100 Продолжений, отправленных мне сервером?
-
07-07-2019 - |
Вопрос
Я использую Apache Commons HttpClient 3.1, и я обнаружил, что HttpURLConnection от Sun удаляет 100 Continues из потока.
Поэтому, похоже, я не могу получить 100 Continue, поскольку они, по-видимому, удалены кодом Sun.
Я не могу перейти к HttpClient 4.0, поскольку это потребовало бы многих изменений в уже существующем коде, поэтому решение должно быть либо 3.1, либо что-то, что не конфликтует.
Есть какие-нибудь идеи?
Спасибо
Решение
Я нашел решение!
Пройдите по строке processStatusLine и проверьте, не равен ли статус 100.
Помните, что ожидается получение первых 100 сообщений (сервер сообщает мне, что я могу продолжить ПУБЛИКАЦИЮ), и в моем случае я могу спокойно проигнорировать это сообщение.Таким образом, я получаю всю информацию, на которую отвечает мой сервер.
public class Counting100PostMethod extends PostMethod {
Logger log = Logger.getLogger(Counting100PostMethod.class);
boolean first100 = true;
public Counting100PostMethod() {
super();
}
public Counting100PostMethod(String s) {
super(s);
}
@Override
protected void processStatusLine(HttpState httpState, HttpConnection httpConnection) {
super.processStatusLine(httpState, httpConnection);
int status = getStatusCode();
if (status == 100) {
if (first100) {
first100 = false;
} else {
// can now increment counter
log.debug("Increment counter");
}
}
}
Другие советы
Похоже, что такое поведение ожидаемо и было отклонено этой проблемой: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4396798.