Как мне посчитать число 100? Продолжает ли сервер мне отправлять? - PullRequest
1 голос
/ 14 сентября 2009

Я использую Apache Commons HttpClient 3.1 и обнаружил, что HttpURLConnection от Sun отбрасывает 100 Continues из потока.

Поэтому я, похоже, не могу получить 100 Continue, поскольку они, по-видимому, сброшены кодом Sun.

Я не могу перейти к HttpClient 4.0, поскольку это потребует многих изменений в уже существующем коде, поэтому решение должно быть 3.1 или что-то, что не конфликтует.

Есть идеи?

Спасибо

Ответы [ 2 ]

1 голос
/ 17 сентября 2009

Я нашел решение!

Обогнать processStatusLine и проверить статус 100.

Помните, что ожидаются первые 100 (сервер говорит мне, что я могу продолжить POST), и в моем случае я могу спокойно проигнорировать это. Таким образом, я получаю всю информацию, с которой отвечает мой сервер.

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");
        }
    }
}
0 голосов
/ 14 сентября 2009

Такое поведение ожидается и было отклонено этой проблемой: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4396798.

...