Pergunta

Estou usando o Apache Commons HttpClient 3.1 e descobri que o HttpurlConnection da Sun Drops os 100 continua a partir do fluxo.

Portanto, não pareço que os 100 continuem, pois aparentemente são jogados pelo código do sol.

Não consigo avançar para o HTTPClient 4.0, pois isso exigiria muitas alterações no código já existente, para que a solução seja 3,1 ou algo que não conflita.

Alguma ideia?

Obrigado

Foi útil?

Solução

Eu encontrei a solução!

ProcessStatusline Over-ride e verifique se há status de 100.

Lembre -se de que os 100 primeiros são esperados (o servidor me dizendo que posso continuar com a postagem) e, no meu caso, posso ignorar com segurança. Dessa forma, recebo todas as informações com as quais meu servidor está respondendo.

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

Outras dicas

Parece que esse comportamento é esperado e foi rejeitado por esta questão: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4396798.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top