Добрый день.
Очень долгое время писал приложение под Android и тестировал его на эмуляторе.
Когда решил протестировать на реальном девайсе, приложение упало.
Спустя некоторе время удалось обнаружить, что проблема в том, что не удаётся получить посредством JSON массив.
В логе при запуске на эмуляторе вижу, что ответи приходит следующий:
{"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"проспект Вернадского, ...
В логи при запуске на смартфоне:
{"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"????? ??????, ????? ...
В принципе я вижу, что сообщение теряется, после того как попадает к ним на сервер (
https://geocode-maps.yandex.ru).
Потому что в тех же логах видно, что им приходит сообщение:
...format=json&geocode=проспект%20Вернадского, %20Москва
Но вот ответ от них приходит, как я писал выше со знаками вопроса, вместо проспекта Вернадского.
Что можете посоветовать? Я уже пробовал кодировать в несколько кодировок, знаки вопроса в ответе так же остаются.
String preUrl = "https://geocode-maps.yandex.ru/1.x/?format=json&geocode="
+ myObjects.get(position).getField.toString;
preUrl = preUrl.replace(" ", "%20");
URL url = new URL(preUrl);
Log.d("KSI++", url.toString());
URLConnection urlConnection = url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder result = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
result.append(line);
Log.d("KSI18", result.toString());
}
try {
JSONObject jsonObject = new JSONObject(result.toString());
JSONArray jsonArray = jsonObject.getJSONObject("response").getJSONObject("GeoObjectCollection").getJSONArray("featureMember");
location = jsonArray.getJSONObject(0).getJSONObject("GeoObject").getJSONObject("Point").getString("pos");
Log.d("KSI++++", location + " EHRERERE!");
} catch (JSONException e) {
e.printStackTrace();
}