Muszę pobrać jakiś obiekt JSON ze zdalnego serwera i dla tego używam tej funkcji, która działa świetnie, z wyjątkiem tego, że czasami jakieś dziwne dane są pobierane, co uważam za jest to, że używa zestawu znaków ASCII do dekodowania.Jak zmienić kodowanie zestawu znaków w odpowiedzi HTTP w Javie
Poniżej znajduje sposobu THW że używam
public HttpResponse call(String serviceURL,String serviceHost,String namespace,String methodName,String payloadKey, String payloadValue) throws ClientProtocolException,IOException,JSONException
{
HttpResponse response = null;
HttpContext HTTP_CONTEXT = new BasicHttpContext();
HTTP_CONTEXT.setAttribute(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0");
HttpPost httppost = new HttpPost(serviceURL);
httppost.setHeader("User-Agent",Constants.USER_AGENT_BROWSER_FIREFOX);
httppost.setHeader("Accept", "application/json, text/javascript, */*");
httppost.setHeader("Accept-Language","en-US,en;q=0.8");
httppost.setHeader("Content-Encoding", "foo-1.0");
httppost.setHeader("Content-Type", "application/json; charset=UTF-8");
httppost.setHeader("X-Requested-With","XMLHttpRequest");
httppost.setHeader("Host",serviceHost);
httppost.setHeader("X-Foo-Target", String.format("%s.%s", namespace,methodName));
/*Making Payload*/
JSONObject objectForPayload = new JSONObject();
objectForPayload.put(payloadKey, payloadValue);
StringEntity stringentity = new StringEntity(objectForPayload.toString());
httppost.setEntity(stringentity);
response = client.execute(httppost);
return response;
}
Wszystkie te nagłówki, że jestem przechodzącej są poprawne i mam zweryfikowane samo przez inspekcję element w Google Chrome lub wtyczki Firebug jeśli są zaznajomieni z Mozillą .
Problem polega na tym, że w większości przypadków otrzymuję czytelne dane, ale czasami dostaję nieczytelne dane.
I debugowania za pomocą eclipse i zauważyłem, że zestaw znaków pod wrappedEntity jest wyświetlany jako "US-ASCII". Załączam jpg dla odniesienia
Czy ktoś może mi powiedzieć, jak mogę zmienić zestaw znaków z ASCII na UTF-8 odpowiedzi zanim zrobię response = client.execute(httppost);
. PS: Jak już zauważyłeś, przechodzę charset = utf-8 w nagłówku i że już sprawdziłem, używając firebug i Google Chrome, że przekazuję dokładne nagłówki.
Powiększ, aby zobaczyć obraz jaśniej
góry dziękuję
próbowałem tego, ale nie działało to samo wynik 'httppost.setHeader (" Accept-Encoding "," UTF-8 ");' – bourne