Магия при работе с json
-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Магия при работе с json
Ситуация такая:
Попытка №1 скачать json и сделать парсинг:
Подключаюсь к интернету через свой HTC Radar по wifi. Начинаю тянуть json от сюда, приходит ровно половина.
Попытка №2 скачать json и сделать парсинг:
Подключаюсь к нормальному интернету по wifi повторяю процедуру и в классе ServiceHandler вылетает ошибка "java.net.UnknownHostException: Unable to resolve host "rusradio.ru": No address associated with hostname"
За основу было взято вот это творение
Класс ServiceHandler не менялся вообще. Изменён и вынесен в другое место был только класс с парсингом, но в нём как бы проблем нету, всё рушиться из-за ServiceHandler.
Попытка №1 скачать json и сделать парсинг:
Подключаюсь к интернету через свой HTC Radar по wifi. Начинаю тянуть json от сюда, приходит ровно половина.
Попытка №2 скачать json и сделать парсинг:
Подключаюсь к нормальному интернету по wifi повторяю процедуру и в классе ServiceHandler вылетает ошибка "java.net.UnknownHostException: Unable to resolve host "rusradio.ru": No address associated with hostname"
За основу было взято вот это творение
Класс ServiceHandler не менялся вообще. Изменён и вынесен в другое место был только класс с парсингом, но в нём как бы проблем нету, всё рушиться из-за ServiceHandler.
Re: Магия при работе с json
что значит приходит половина? как вы это проверяете? в лог выводите или куда? Сообщения в логе обрезаются и это не значит, что пришло не все, проверяйте выводом в файл или при отладке выставляя точки остановы, в IDEA есть возможность просмотреть содержимое переменной в которой json пришел, в eclipse тоже должно быть.
по поводу второго, вы можете к google.com подключиться? пробывали добавить www. подключались без DNS через IP? Попробуйте в начало добавить проверку if host exists, например на google. Уберите http://, или добавьте www, в общем варрианты другие.
по поводу второго, вы можете к google.com подключиться? пробывали добавить www. подключались без DNS через IP? Попробуйте в начало добавить проверку if host exists, например на google. Уберите http://, или добавьте www, в общем варрианты другие.

-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Магия при работе с json
Значит, что часть массива json отрезается или не до загружается и на месте обрыва ставится многоточие.altwin писал(а):что значит приходит половина? как вы это проверяете? в лог выводите или куда? Сообщения в логе обрезаются и это не значит, что пришло не все, проверяйте выводом в файл или при отладке выставляя точки остановы, в IDEA есть возможность просмотреть содержимое переменной в которой json пришел, в eclipse тоже должно быть.
по поводу второго, вы можете к google.com подключиться? пробывали добавить www. подключались без DNS через IP? Попробуйте в начало добавить проверку if host exists, например на google. Уберите http://, или добавьте www, в общем варрианты другие.
Проверяю в режиме отладки, смотрю, что приходит и хранится в переменной.
Подключаюсь без DNS, попробовал убрать http://, добавить www получается такая ошибка:
java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=www.rusradio.ru/jsonexport.aspx
Re: Магия при работе с json
В режиме дебага если toString() возвращает большое количество значений то ставит троеточие и всё не показывает, так что всё приходит нормальноLucifer777 писал(а):Значит, что часть массива json отрезается или не до загружается и на месте обрыва ставится многоточие.]
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Магия при работе с json
Думал об этом но не был уверен.rezak90 писал(а):В режиме дебага если toString() возвращает большое количество значений то ставит троеточие и всё не показывает, так что всё приходит нормальноLucifer777 писал(а):Значит, что часть массива json отрезается или не до загружается и на месте обрыва ставится многоточие.]
как же быть тогда?
Re: Магия при работе с json
Вообще так просто не бывает, если json объект приходит не правильный - это ошибка только сервера без варриантов. Но никакого многоточия там быть не должно, многоточие -его только IDE могла поставить вы eclipse пользуетесь? я просто не знаю как он работает и обрезает ли что то. Но с сервера то как может многоточие прийти?Lucifer777 писал(а): Значит, что часть массива json отрезается или не до загружается и на месте обрыва ставится многоточие.
Проверяю в режиме отладки, смотрю, что приходит и хранится в переменной.
попробывал отправить запрос - response без ошибок, проблемы нет.
вы же браузером обращаетесь на этот адрес все ок? значит вы куда то не туда смотрите. Либо что то не так с запросом.

Re: Магия при работе с json
я же по русски спрашивал как вы смотрите... toString - это не какого отношения к просмотру значения в debug режиме не имеет. Когда вы ставите точку остановки и запускаете debug -ер он показывает переменный, на нужной нажимте правую кнопку мышки и "показать значение".Lucifer777 писал(а):Думал об этом но не был уверен.rezak90 писал(а):В режиме дебага если toString() возвращает большое количество значений то ставит троеточие и всё не показывает, так что всё приходит нормальноLucifer777 писал(а):Значит, что часть массива json отрезается или не до загружается и на месте обрыва ставится многоточие.]
как же быть тогда?

Re: Магия при работе с json
как же быть тогда?
вы прочитали это в первом сообщении? Выводом в лог или toString вы ничего не проверите.altwin писал(а):... проверяйте выводом в файл или при отладке выставляя точки остановы, в IDEA есть возможность просмотреть содержимое переменной в которой json пришел, в eclipse тоже должно быть.

Re: Магия при работе с json
если не нажимать Watch в контекстном меню, а просто подвести курсор на переменную и выскочит такое контекстное окошечко то вызывается у объекта toString()altwin писал(а):toString - это не какого отношения к просмотру значения в debug режиме не имеет.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Магия при работе с json
я eclipse никогда не пользовалсяrezak90 писал(а):если не нажимать Watch в контекстном меню, а просто подвести курсор на переменную и выскочит такое контекстное окошечко то вызывается у объекта toString()altwin писал(а):toString - это не какого отношения к просмотру значения в debug режиме не имеет.
просто я никаким местом не думал, что человек, который говорит, что проверяет значение переменной дебагером делает это вызывая toString

-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Магия при работе с json
да я использую eclipse. Сервер json выдаёт правильный в этом можно убедится зайдя на него.altwin писал(а):Вообще так просто не бывает, если json объект приходит не правильный - это ошибка только сервера без варриантов. Но никакого многоточия там быть не должно, многоточие -его только IDE могла поставить вы eclipse пользуетесь? я просто не знаю как он работает и обрезает ли что то. Но с сервера то как может многоточие прийти?
попробывал отправить запрос - response без ошибок, проблемы нет.
вы же браузером обращаетесь на этот адрес все ок? значит вы куда то не туда смотрите. Либо что то не так с запросом.
Я вроде так и делаю. Делаю и вижу, что json, который пришёл- не полный.altwin писал(а): я же по русски спрашивал как вы смотрите... toString - это не какого отношения к просмотру значения в debug режиме не имеет. Когда вы ставите точку остановки и запускаете debug -ер он показывает переменный, на нужной нажимте правую кнопку мышки и "показать значение".
В лог выводил, там находится тоже самое, что в режиме debug при просмотре значения переменной,в которой сохроняю json. Сохранение json в String происходит таким образом:altwin писал(а): вы прочитали это в первом сообщении? Выводом в лог или toString вы ничего не проверите.
HttpGet httpGet = new HttpGet(url);
httpResponse = httpClient.execute(httpGet);
httpEntity = httpResponse.getEntity();
String response = EntityUtils.toString(httpEntity);
Re: Магия при работе с json
Никогда не делайте так. Все запросы должны быть асинхронны.Lucifer777 писал(а): В лог выводил, там находится тоже самое, что в режиме debug при просмотре значения переменной,в которой сохроняю json. Сохранение json в String происходит таким образом:
HttpGet httpGet = new HttpGet(url);
httpResponse = httpClient.execute(httpGet);
httpEntity = httpResponse.getEntity();
String response = EntityUtils.toString(httpEntity);
пример делает запрос к vk и получает json, url фото категории 605 выводятся в лог(вообще не важно, важен запрос и как он делается)
[syntax=java5]
String url = "https://api.vk.com/method/photos.search ... 5000&v=5.7";
AsyncHttpClient client = new AsyncHttpClient();
client.get(url, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
super.onSuccess(statusCode, headers, responseBody);
try {
JSONObject jsonObject = new JSONObject(new String(responseBody));
JSONObject jsonResult = jsonObject.getJSONObject("response");
JSONArray jArray = jsonResult.getJSONArray("items");
for (int i = 0; i < jArray.length(); i++) {
try {
JSONObject oneObject = jArray.getJSONObject(i);
Log.d(LOG_TAG, oneObject.getInt("id")
+ ": "
+ oneObject.getString("photo_604"));
} catch (JSONException e) {
e.printStackTrace();
Log.d(LOG_TAG, "JSONException in for loop");
}
}
} catch (JSONException e) {
e.printStackTrace();
Log.d(LOG_TAG, "JSONException with get json");
}
}
});
[/syntax]
1. Запрос асинхронный
2. Не надо пихать json в строку, для этого есть JSONObject

-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Магия при работе с json
Так, что бы наверняка, что я всё правильно смотрю:altwin писал(а):просто я никаким местом не думал, что человек, который говорит, что проверяет значение переменной дебагером делает это вызывая toString
- Вложения
-
- Снимок.PNG (11.75 КБ) 14807 просмотров
-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Магия при работе с json
Хорошо, спасибо! Попробую и отпишусь о результате. Но одна проблема так и остаётся не решенной и какой-то мистикой. Почему когда интернет раздаю с телефона по wifi хоть что-то да грузит, а когда подключаюсь к dsl модему то происходит облом?altwin писал(а):1. Запрос асинхронный
2. Не надо пихать json в строку, для этого есть JSONObject
Re: Магия при работе с json
возможно проблемы с прокси, но опять же что такое облом, что приходит в ответе с сервера? там даже если bad request есть ответ. Если вообще не уходит запрос, то проблема в настройках сети.Lucifer777 писал(а):Хорошо, спасибо! Попробую и отпишусь о результате. Но одна проблема так и остаётся не решенной и какой-то мистикой. Почему когда интернет раздаю с телефона по wifi хоть что-то да грузит, а когда подключаюсь к dsl модему то происходит облом?altwin писал(а):1. Запрос асинхронный
2. Не надо пихать json в строку, для этого есть JSONObject
По поводо дебага я уже понял, что смотрите вы правильно, просто это не поможет если вы изначально в строку пытаетесь все засунуть
P.S> я чуть не забыл... в примере, который приводил для упрощения запроса используется AsyncHttpClient, это клас отсюда: http://loopj.com/android-async-http/?ut ... ign=Buffer
просто добавьте jar, зависимостей нет.

-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Магия при работе с json
вот так выглядит облом: "java.net.UnknownHostException: Unable to resolve host "rusradio.ru": No address associated with hostname"altwin писал(а):возможно проблемы с прокси, но опять же что такое облом, что приходит в ответе с сервера? там даже если bad request есть ответ. Если вообще не уходит запрос, то проблема в настройках сети.Lucifer777 писал(а):Хорошо, спасибо! Попробую и отпишусь о результате. Но одна проблема так и остаётся не решенной и какой-то мистикой. Почему когда интернет раздаю с телефона по wifi хоть что-то да грузит, а когда подключаюсь к dsl модему то происходит облом?altwin писал(а):1. Запрос асинхронный
2. Не надо пихать json в строку, для этого есть JSONObject
По поводо дебага я уже понял, что смотрите вы правильно, просто это не поможет если вы изначально в строку пытаетесь все засунуть
P.S> я чуть не забыл... в примере, который приводил для упрощения запроса используется AsyncHttpClient, это клас отсюда: http://loopj.com/android-async-http/?ut ... ign=Buffer
просто добавьте jar, зависимостей нет.
Прокси или каких-то замудренных настроек нету. Обычный домашний интернет.
Re: Магия при работе с json
ну вообще это ошибка хоста, самая частая причина отсутсвие в манифесте:
<uses-permission android:name="android.permission.INTERNET"/>
вы случайно не linux используете? был такой баг: http://bugs.java.com/bugdatabase/view_b ... id=4665037, попробуйте в проекте использовать другую версию java.
Но вообще странно, хорошо бы к wifi соседей подключиться и попробывать
<uses-permission android:name="android.permission.INTERNET"/>
вы случайно не linux используете? был такой баг: http://bugs.java.com/bugdatabase/view_b ... id=4665037, попробуйте в проекте использовать другую версию java.
Но вообще странно, хорошо бы к wifi соседей подключиться и попробывать
Последний раз редактировалось altwin 07 фев 2014, 00:47, всего редактировалось 2 раза.

Re: Магия при работе с json
С LogCat тоже самое, если его слишком много он его обрежет.Lucifer777 писал(а):В лог выводил, там находится тоже самое, что в режиме debug при просмотре значения переменной,в которой сохроняю json.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
Lucifer777
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Магия при работе с json
нет, у меня win 8.1 prof.altwin писал(а):ну вообще это ошибка хоста, самая частая причина отсутсвие в манифесте:
<uses-permission android:name="android.permission.INTERNET"/>
вы случайно не linux используете? был такой баг: http://bugs.java.com/bugdatabase/view_b ... id=4665037, попробуйте в проекте использовать другую версию java.
Но вообще странно, хорошо бы к wifi соседей подключиться и попробывать
Это первым делом было прописано)))
<uses-permission android:name="android.permission.INTERNET"/>
Я в частном доме живу, тут тяжело соседский wifi найти((
Ладно, это не основная проблема-если решу, то отпишусь.
Re: Магия при работе с json
Валерия Пендраковский снял фильм про Lucifer777, фильм называется "Ушел и не вернулся"
«Life is too short to spend rewriting code»