3 Stimmen

Zeitweise unvollständige Antwort mit Apache HttpClient 3.0.1

Ich bin verblüfft über diese, so dass ich dachte, ich würde fragen, für den Fall, dass jemand von Ihnen über es gekommen sind, da HttpClient Entwicklung ein wenig eine Kunst ist.

Das Problem, vor dem ich stehe, ist folgendes: Eine Anwendung verwendet die Apache HttpClient Java-Bibliothek, um mit einem Server im selben Firmennetz zu kommunizieren. Die meiste Zeit funktioniert es ohne Probleme, aber gelegentlich sehen wir eine Flut von Ausnahmen, die durch unvollständige Antworten verursacht werden: Bei allen fehlen die letzten drei Zeichen des schließenden Tags, so dass sich der Parser im Client beschwert. Dies dauert etwa 5 bis 10 Minuten und verschwindet dann wieder.

Ich konnte dieses Problem nicht lokal replizieren und habe sichergestellt, dass die Antwort vollständig vom Server geschrieben wird. Der Client erhält den Inhalt der Antwort mit der Methode getResponseBodyAsStream() der PostMethode, die jedoch nur einmal aufgerufen wird. Vielleicht muss diese Methode in einer Schleife aufgerufen werden, bis sie für den seltenen Fall, dass die Antwort gepuffert wird, null erhält?

Ich bin für jeden Beitrag dankbar.

Edit: Der Server schreibt den content-length-Header und flusht korrekt, und auf dem Client werden die Daten in einen String mit gelesen:

//method is a PostMethod, client is a HttpClient
client.executeMethod(hostconfig, method); 

InputStream is = method.getResponseBodyAsStream();
String response = null;

try {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();    
    byte[] buf = new byte[1024];
    int len;

    while ((len = is.read(buf)) > 0) {
        bos.write(buf, 0, len);
    }

    response = new String(bos.toByteArray(), "UTF-8");

} ... // closing try block

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X