Domanda

Sto usando Apache Commons HttpClient 3.1 e ho scoperto che HttpURLConnection da Sun elimina i 100 continui dallo stream.

Quindi, quindi, non riesco a ottenere i 100 Continui poiché apparentemente sono stati eliminati dal codice di Sun.

Non riesco a passare a HttpClient 4.0 poiché ciò richiederebbe molte modifiche al codice già esistente, quindi la soluzione deve essere 3.1 o qualcosa che non sia in conflitto.

Qualche idea?

Grazie

È stato utile?

Soluzione

Ho trovato la soluzione!

Procedi in eccessoStatusLine e verifica lo stato di 100.

Ricorda che sono attesi i primi 100 (il server mi dice che posso continuare con il POST), e nel mio caso posso tranquillamente ignorarlo. In questo modo ottengo tutte le informazioni con cui il mio server risponde.

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

Altri suggerimenti

Sembra che questo comportamento sia previsto ed è stato respinto da questo problema: http :? //bugs.sun.com/bugdatabase/view_bug.do bug_id = 4396798 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top