HttpClient verschluckt Buchstaben

  • Antworten:3
Phil
  • Forum-Beiträge: 40

24.01.2013, 10:57:55 via Website

Hallo,
ich habe eine Internetseite zum Beispiel folgenden Text asl Plaintext ausgibt:
STATUS|OK|-352-2-2Message10:39schöne grüße an alle

Jetzt habe ich das Problem, das der HttpClient den Text am ende abschenidet. Teilweise sind es zwei Zeichen, teilweise sind es drei. Ich habe schon verschiedene Methoden versucht, jedoch komme ich immer wieder zum selben Ergebnis.

Versuche ich aber das hier zu empfangen
STATUS|OK|-352-2-2Message10:391234567890 1234567890
dann werden alle Zeichen korrekt empfangen.

Also muss es ja wohl was mit den tollen Deutschen Umlauten zu tun haben. Der Webserver gibt mir den String als text/plain; charset=utf-8 zurück.

Hier ein Empfangsversuch, der die oben geschilderten Ergebnisse liefert:
1String url = "http://mein-server.de/meine-seite.php?var1=ein&var2=paar&var3=vars";
2HttpClient client = new DefaultHttpClient();
3 HttpGet request = new HttpGet();
4 request.setHeader("Accept-Charset", "utf-8");
5 request.setURI(new URI(url));
6 HttpResponse response = client.execute(request);
7 HttpEntity entity = response.getEntity();
8 String content = EntityUtils.toString(entity, "UTF8");
9 //String content = new String(EntityUtils.toString(entity, "UTF8");));
10 //String content = new String(EntityUtils.toString(entity);));

Vielleicht hatte jemand schon ein ähnliches Problem und konnte es lösen, oder jemand hatte das Problem erst garnicht uns kann mir verraten wie er das gelöst hat?
Oder vielleicht hat wer anders ja eine Lösung :)

Danke :)
Phil

— geändert am 24.01.2013, 10:59:13

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

24.01.2013, 11:21:37 via Website

Das wäre so essentiell das ich es mir nicht vorstellen kann, der HTTP Client wird praktisch in jedem Projekt verwendet.
Schau lieber am in deinem Code nach fehlern...

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

24.01.2013, 11:31:25 via Website

Also einmal der Vollständigkeit halber:
Das Encoding übergibt man korrekt mit "UTF-8", ohne Bindestrich ist es EIGENTLICH nicht richtig, wird häufig aber auch akzeptiert.
Könnte sein, dass das schon das Problem ist.

Du kannst auch mal testen, was
1String content = EntityUtils.toString(entity, "ISO-8859-1");
liefert. Kann ja sein, dass der Server garnicht in UTF-8 antwortet.
Das würde man dann aber auch an den Headern im Response sehen. Einfach mal im Debugger reingucken.

Antworten
Phil
  • Forum-Beiträge: 40

24.01.2013, 11:57:32 via Website

Hi,
Also ich habe folgendes geändert:
Ich habe das UTF-8 mit Bindestrich übergben. -> hat nichts geändert.
Ich habe es mit ISO-8859-1 versucht -> hat sich ebenfalls nichts weiter getan.

Im Header steht der Content-Type auf Text/Plain; charset=UTF-8. Die Content-Length ist 56, der ausgegebene String aber nur 53 Zeichen lang. Gucke ich mir den Content im Header an, dann ist dieser dort auch schon abgeschnitten.

Rufe ich die selbe Seite in meinem Browser am PC auf, ist alles komplett.

Antworten