Haben Android-Entwickler erfolgreich Chunked-Übertragungsprotokoll von einem Webdienst erhalten?

8

Ich habe mit mehreren Klassenimplementierungen gekämpft, um Chunked-Daten ohne Erfolg abzurufen. Das folgende ist ein vereinfachtes Codemodul, das das Problem aufweist. Nach dem Surfen im Internet scheint es in der Vergangenheit Probleme gegeben zu haben (2009, 2010; Ver 1.1, 1.5), aber sie sollten jetzt gelöst werden. Ich habe keinen definitiven Erfolg mit Android-Plattform für dieses Protokoll gesehen.

Hilfe!

Ich kann eine Antwort sehen, wenn ich ein ungültiges Token einlege - der Webservice antwortet mit einer Fehlermeldung des Programms. Die gültige URL und das Token antworten jedoch einfach mit einer Erkennung des Chunked-Protokolls (isChunked () gibt true zurück), aber es wird nichts gelesen und nichts abgelaufen, usw.

Die exakt gleiche URL, die mit CURL über eine Befehlszeile ausgegeben wird, funktioniert wie erwartet und zeigt den fortlaufenden Inhalt (veröffentlichte Daten vom Web-Service) an.

Gibt es Web-Service-Side-Hacks, z. B. fügen Sie mehr Zeilenenden hinzu, um den Empfangsstrom zu erzwingen?

%Vor%     
mobibob 20.02.2011, 04:11
quelle

1 Antwort

9

Ich habe den Code, den Sie auf meinem Emulator mit Android 2.2 geschrieben haben, getestet und es funktioniert gut. Die Chunked-URL, die ich verwendete, war:

%Vor%

Ich habe festgestellt, dass BasicResponseHandler weiterhin versucht, bis zum Ende des Streams zu lesen, und dann alle Daten auf einmal zurückgibt. Der Code könnte hängen bleiben und auf das Schließen des Streams warten. Beendet Ihr Webservice den Stream? oder gibt es weiterhin Stücke für immer zurück? Ich sehe keine Methode, um nur den ersten Chunked zurück zu bekommen, aber ich habe einen einfachen Handler geschrieben, der nur den ersten Read aus dem Input-Stream liest (was bedeutet, dass ein genügend großer Puffer dem Chunk entspricht). Im Falle der URI, die ich zum Testen verwendet habe, gibt es jede Zeile der HTML-Datei als Chunk zurück. Sie können nur den ersten hier zurückgegeben sehen.

Wenn dies für Sie funktioniert, können Sie leicht einen Handler schreiben, der anstelle einer Zeichenkette zurückgibt, eine Enumeration oder ein anderes Objekt zurückgibt, wo Sie jeden der Chunks zurückgeben könnten. Oder sogar deine eigene Klasse.

%Vor%     
christophercotton 28.02.2011, 18:34
quelle

Tags und Links