im, имея странную проблему при получении json результатов с сервера. Я понятия не имею, в чем проблема. Дело в том, что мой результат String json поврежден, со странными символами.
Результат такой же (взятый из отладки eclipse)
Изображение:
Другая странная вещь, которая случается, заключается в том, что когда я изменяю URL-адрес службы на альтернативный, она работает, и данные не повреждаются. URL-адреса являются одинаковыми, но когда-то перенаправляют все на другое. URL-адрес всегда используется (например) http://www.hello.com
. URL-адрес, который работает, - http://www.hello.com.uy
(не могу указать точную ссылку по соображениям безопасности)
Второй перенаправляет все на первое, это единственное, что он делает.
Я попытался изменить кодировку на UTF-8 и все еще не работает, вот код (с одним из прокомментированных URL-адресов)
Я также пробовал использовать расширение Dev HTTP Client от chrome для проверки службы, и он отлично работает, никаких поврежденных данных. Кроме того, он отлично работает на iOS, поэтому я думаю, что это просто и проблема с Android и Java.
DevClient:
try {
JSONObject json = new JSONObject();
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
HttpConnectionParams.setSoTimeout(httpParams, 10000);
HttpClient client = new DefaultHttpClient(httpParams);
//String url = TAG_BASEURL_REST +"Sucursal";
String url = "http://www.-------.com/rest/Sucursal";
//String url = "http://www.--------.com.uy/rest/Sucursal";
HttpGet request = new HttpGet(url);
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
String jsonRes = sb.toString();
JSONArray jObj = new JSONArray(jsonRes);
return jObj;
}
} catch (Throwable t) {
Log.i("Error", "Request failed: " + t.toString(), t);
}
return null;
InputStream is = entity.getContent();
// check if the response is gzipped
Header encoding = response.getFirstHeader("Content-Encoding");
if (encoding != null && encoding.getValue().equals("gzip")) {
is = new GZIPInputStream(is);
}