Zeichenfolge wird abgeschnitten, wenn sie zu lang ist

8

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.

    
achie 26.08.2010, 22:29
quelle

5 Antworten

13

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.

    
achie 27.08.2010, 19:35
quelle
1

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.

    
CommonsWare 26.08.2010 23:22
quelle
1

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.

    
Stephen C 27.08.2010 00:16
quelle
0

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%     
Umesh 27.08.2010 12:16
quelle
0

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:)

    
quelle

Tags und Links