Dies ist über ein seltsames Verhalten, das ich erlebt habe, während eine servlet
, die Daten von Apache Solr
basierend auf einigen Parametern, die ich zu servlet
liefern anrufe und abruft.Servlet Antwort unerwartet im Base64-Format
Die servlet
Abfragen Solr
und gibt Daten an mich im JSON-Format zurück. Überprüfen Sie es dann, indem Sie eine System.out.println(response)
platzieren. Es war nur im json-Format.
Mein Problem ist, dass, wenn ich dieselbe Antwort über einen Client erhielt, der diesen Dienst verwendete, Daten im Format Base64
zurückgegeben. In meinem Code habe ich nicht einmal eine Zeile geschrieben, die die Antwort in Base64
konvertiert. Die einzige Zeile, die ich vor dem Senden der Antwort geschrieben habe, war resp.setContentType("application/json")
.
Obwohl ich es später löste, indem ich resp.setCharacterEncoding("UTF-8");
in meinem servlet
vor dem Senden der Antwort löste. Dann erhielt ich nur JSON
Antwort jedes Mal, wenn ich auf der Client-Seite oder über eine REST client
abgefragt habe. Aber ich frage mich immer noch, warum das passiert ist, warum eine Antwort, die als JSON
von servlet
in Base64
konvertiert wurde?
Hat jemand so etwas schon mal erlebt?
Ich verwende Apache Tomcat als meinen Server.
In meinem Servlet, wenn ich die Antwort von Solr drucke, ist es nur JSON. Und der ganze Index in Solr besteht nur aus englischer Sprache. Also, versuchen Sie zu sagen, dass Tomcat interpretiert hat, dass die Antwort in Base64 gesendet werden sollte? Ein Hinweis hier ist, dass ich, während ich eine HTTP-POST-Anfrage an Solr innerhalb meines Servlets mache, meine Kodierung bereits als UTF-8 eingestellt habe. Warum muss ich also die response-durchsetzende Zeichencodierung als UTF-8 einstellen? Das gleiche Servlet, wenn es in Google App Engine ausgeführt wird, erzeugt keine solchen Probleme und die Antwort wird nur im JSON-Format empfangen. –
Nun, Sie beantworten Ihre eigenen Fragen. Welcher Unterschied löst die Kodierung aus? Klingt wie Tomcat, also konzentriere dich darauf. –
Hmm ... werde das tun. Aber da dieses Problem gelöst wird, indem Sie die Zeichenkodierung einstellen, können nur Nachhinein gemacht werden.Tried Tomcat Dokumentation für diese Art von Verhalten, fand keine bestimmten Aussagen. Aber es wirft eine Frage auf, dass die Integrität des Datenformats ist so anfällig, dass Ein Application Server kann ihn aufgrund seiner Berücksichtigung ändern? –