2009-09-14 3 views
1

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

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

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

Любые идеи?

Благодаря

ответ

1

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

Чрезмерная езды 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

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

+0

Да, но разве я не могу использовать что-то еще, что плохо написано Солнцем? Эта ошибка не совсем соответствует моей, есть сообщение форума http://forums.sun.com/thread.jspa?threadID=450453, в котором говорится: «Вы не можете. Если вы проверите исходный код j2se, вы будете обратите внимание, что sun.net.www.http.HttpClient просто сбрасывает «100 Continue» и ждет ответа, следующего за ним ». Так что я надеюсь, что где-то есть решение, отличное от Солнца ... – Richard