Devo recuperare alcuni oggetti JSON da un server remoto e per quello sto usando questa funzione che funziona benissimo tranne per il fatto che per qualche tempo alcuni dati strani vengono recuperati che credo è perché sta usando il set di caratteri ASCII per decodificare.Come posso cambiare la codifica del charset nella risposta HTTP in Java
Di seguito riportiamo il metodo THW che sto usando
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;
}
Tutte queste intestazioni che sto passando siano corretti e ho verificato la stessa via ispezionare elemento in Google Chrome o un plugin Firebug se si ha familiarità con Mozilla .
Ora il problema è che il più delle volte ottengo i dati leggibili ma a volte ottengo dati illeggibili.
Ho eseguito il debug utilizzando eclipse e ho notato che il set di caratteri sotto wrappedEntity viene visualizzato come "US-ASCII". Allego un jpg per riferimento
Qualcuno può dirmi come posso cambiare il set di caratteri da ASCII a UTF-8 della risposta prima di fare response = client.execute(httppost);
. PS: Come hai notato, sto passando charset = utf-8 nell'intestazione e che ho già verificato usando firebug e google chrome che sto passando le intestazioni esatte.
Si prega di zoom per vedere l'immagine più chiara
Grazie in anticipo
ho provato, ma non ha funzionato lo stesso risultato 'httppost.setHeader (" Accept-Encoding "," UTF-8 ");' – bourne