Ich versuche, eine JSON-Antwort von unserem Server zu erhalten, und die Antwortzeichenfolge wird immer abgeschnitten, wenn die Zeichenfolgenlänge ungefähr 5525 Zeichen erreicht.
%Vor%Ich habe das auch versucht, indem ich HttpEntity benutzt und den Antwort-Stream gelesen habe. Aber das schneidet auch die Zeichenfolge ungefähr in dieser Länge ab.
%Vor%Bitte lassen Sie mich wissen, wie ich mit diesem Problem umgehen kann. Ich habe diesen Beitrag als Referenz benutzt, als ich das erstellt habe. Ссылка
Danke.
Zunächst einmal vielen Dank für die Antwort.
Ich habe gerade festgestellt, dass das Problem nicht bei meinem Code liegt, sondern bei der Anzahl der Zeilen, die das Logcat anzeigt. Das Problem war, dass ich ein Problem in meinem JSON-Antwortformat hatte und mein Parsing-Code einen Fehler ausgibt. Also habe ich angefangen, es zu debuggen, indem ich die Antwort-JSON-Zeichenkette in logcat drucke. Dies wird immer abgeschnitten und ich vermutete bis jetzt, dass die Antwort vom Server selbst abgeschnitten wird.
Heute habe ich mit dem Response String Builder angefangen und muss lustige Snippets schreiben, um die Charaktere zu zählen und die Charaktere an den erwarteten Positionen zu erkennen, und ich stellte fest, dass die Antwort vollständig zurückgegeben wurde. Ich habe meinen Code auch auf anderen großen Stings getestet und festgestellt, dass das Logcat die Länge der angezeigten Zeichenfolge begrenzt oder zumindest so aussieht. Deshalb wurden meine Antworten als abgeschnittene Strings angezeigt und ich dachte, dass es das Problem mit meinem Code ist.
Es funktioniert also gut, da der Code früher ist und das einzige Problem war dass das Logcat nicht die vollständige Zeichenfolge anzeigt. Aber das tut es nicht belästige mich [zumindest jetzt].
Danke nochmal an alle, die versucht haben zu helfen.
Verwenden Sie ein BasicResponseHandler
:
In diesem Beispiel wird veranschaulicht, wie Verarbeiten von HTTP-Antworten mit a Antworthandler. Dies ist das empfohlene Art der Ausführung von HTTP Anfragen und Verarbeitung von HTTP Antworten. Dieser Ansatz ermöglicht die Anrufer, um sich auf den Prozess zu konzentrieren verdauen HTTP-Antworten und zu delegieren Sie die Aufgabe der Systemressource Freigabe zu HttpClient. Die Verwendung von Eine HTTP-Antwort garantiert, dass der zugrunde liegende HTTP-Verbindung wird sein freigegeben zurück zur Verbindung Manager automatisch in allen Fällen.
Es ist möglich, dass der Server den Unterschied zwischen Ihrem Browser und Ihrer Anwendung erkennen kann und anders reagiert.
Hacken Sie Ihren Java-Code, um die Anforderungs- und Antwortheader auszudrucken, und vergleichen Sie sie mit den Überschriften, die Sie bei der Verwendung Ihres Browsers erhalten.
Versuchen Sie auch, die Anfrage mit curl
und / oder wget
von der Befehlszeile aus auszuführen. Diese geben Ihnen viel mehr Informationen sowie die Möglichkeit, Anforderungsheader zu setzen.
String line = reader.readLine ();
Ich glaube, die obige Zeile in Ihrem Programm ist das Problem. Es liest eine Zeile aus der Serverantwort und der String-Zeile. Wenn die Serverantwort einen Zeilenvorschub (\ n) hat, kann der Leser die Zeile danach nicht mehr lesen.
verwenden Sie Folgendes, um dies zu vermeiden ..
if (Antwortcode == HttpURLConnection.HTTP_OK) {
%Vor%Obwohl es ziemlich spät ist, kann es aber jemand anderem helfen Ich habe diesen Code verwendet, um die vollständige LONG-Zeichenfolge anzuzeigen. Irgendwo auf der gleichen Seite gefunden
%Vor%Bitte stimmen Sie ab, wenn sie hilfreich sind:)
Tags und Links java android httpclient