Pregunta

Estoy usando Apache Commons HttpClient 3.1, y descubrí que HttpURLConnection de Sun deja caer los 100 Continues de la transmisión.

Por lo tanto, parece que no puedo obtener los 100 Continuar, ya que aparentemente son eliminados por el código de Sun.

No puedo avanzar a HttpClient 4.0 ya que eso requeriría muchos cambios en el código ya existente, por lo que la solución debe ser 3.1 o algo que no entre en conflicto.

¿Alguna idea?

Gracias

¿Fue útil?

Solución

¡Encontré la solución!

Over-ride processStatusLine y verifique el estado de 100.

Recuerde que se esperan los primeros 100 (el servidor me dice que puedo continuar con la POST) y, en mi caso, puedo ignorarlo con seguridad. De esta manera obtengo toda la información con la que mi servidor responde.

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");
        }
    }
}

Otros consejos

Parece que este comportamiento es esperado y fue rechazado por este problema: http : //bugs.sun.com/bugdatabase/view_bug.do? bug_id = 4396798 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top