Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Ghbphfr
0 / 0 / 0
Регистрация: 11.03.2016
Сообщений: 18
#1

Получить json - Android

11.03.2016, 15:57. Просмотров 250. Ответов 5
Метки нет (Все метки)

Здравствуйте. Мне нужно получить следующий json ответ с моего сайта для мобильного приложения.
XML
1
{"count":23,"next":null,"previous":null,"results":[{"title":"Открытки про осень","slug":"otkrytki-pro-osen"},{"title":"Открытки на выпускной 2016 и окончание школы","slug":"otkrytki-na-vypusknoj-2016-i-okonchanie-shkoly"},{"title":"Открытки с Днём России 12 июня","slug":"otkrytki-s-dnyom-rossii-12-iyunya"},{"title":"Открытки с 9 мая — Днём Победы","slug":"otkrytki-s-9-maya-dnyom-pobedy"},{"title":"Открытки с 1 мая","slug":"otkrytki-s-1-maya"},{"title":"Открытки с Пасхой 1 мая 2016","slug":"otkrytki-s-pashoj-1-maya-2016"},{"title":"Открытки с Масленицей","slug":"otkrytki-s-maslenicej"},{"title":"Открытки на день матери","slug":"otkrytki-na-den-materi"},{"title":"Открытки с 1 сентября","slug":"otkrytki-s-1-sentyabrya"},{"title":"Открытки к свадьбе","slug":"otkrytki-k-svadbe"},{"title":"Открытки с рождением","slug":"otkrytki-s-rozhdeniem"},{"title":"Картинки с надписями","slug":"kartinki-s-nadpisyami"},{"title":"Открытки с Днём ангела","slug":"otkrytki-s-dnyom-angela"},{"title":"Открытки улыбнись!","slug":"otkrytki-ulybnis"},{"title":"Выздоравливай!","slug":"vyzdoravlivaj"},{"title":"Открытки скучаю","slug":"otkrytki-skuchayu"},{"title":"Открытки с добрым утром","slug":"otkrytki-s-dobrym-utrom"},{"title":"Открытки спокойной ночи","slug":"otkrytki-spokojnoj-nochi"},{"title":"Открытки любимым с признанием в любви","slug":"otkrytki-lyubimym-s-priznaniem-v-lyubvi"},{"title":"Поздравительные открытки","slug":"pozdravitelnye-otkrytki"},{"title":"Открытки с 8 марта","slug":"otkrytki-s-8-marta"},{"title":"Открытки на юбилей","slug":"otkrytki-na-yubilej"},{"title":"Открытки с днём рождения","slug":"otkrytki-s-dnyom-rozhdeniya"}]}
Используя эту статью параметр json всегда получается null
JSON
1
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
AssyncTask:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class UpdateTask extends AsyncTask<String, Void, JSONObject> {
        Context context;
 
        public UpdateTask(Context context) {
            super();
            this.context = context;
        }
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
 
        @Override
        protected JSONObject doInBackground(String... urls) {
            return loadJSON(urls[0]);
        }
 
        public JSONObject loadJSON(String url) {
 
            JSONParser jParser = new JSONParser();
            // здесь параметры необходимые в запрос добавляем
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("page", "1"));
            // посылаем запрос методом GET
            JSONObject json = jParser.makeHttpRequest(url, "GET", params);
 
            return json;
        }
 
        @Override
        protected void onPostExecute(JSONObject jsonData) {
            // если какой-то фейл, проверяем на null
            // фейл может быть по многим причинам: сервер сдох, нет сети на устройстве и т.д.
            if (jsonData != null) {
                super.onPostExecute(jsonData);
                String res = "";
                try {
 
                    res = jsonData.getString("title");
 
 
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
 
            }
        }
    }
Мне нужно просто получить json. На странице нет запроса прав доступа.
http://127.0.0.1:8000/galleries/?format=json&page=1
В браузере все срабатывает, в коде нет.

В JSonParcer.class я только изменил формирование параметра, но при дебаггинге строка запроса получается верной.
JSON
1
url += "?format=json" + "&" + paramString;
Как проще и правильней получать такие json ответы? Что я делаю не так?

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2016, 15:57     Получить json
Посмотрите здесь:

Android Массив из json
Json Parsing Android
Не получается получить json Android
Android Создать JSON
Android C JSON в ListView
Обработка Json Android
Android Послать POST запрос с параметрами и получить json
Получить JSON и передать все его параметры его в Intent. Использован автофильтр Android
Android JSON
Android Парсинг json
Получить json в приложении и вывести его в listview во фрагмент Android
Парсинг Json Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
11.03.2016, 16:17     Получить json #2
Ghbphfr, добрый день!
Честно говоря, не хочется копаться в других функциях типа makeHttpRequest. Может быть, использовать HttpUrlConnection или AsyncHttpClient? Попробуйте взять другой url (найдите в Сети примеры json'ов и url оттуда) и посмотреть результат.

Добавлено через 1 минуту
Кстати, разрешение на Интернет стоит в манифесте?

Добавлено через 1 минуту
Цитата Сообщение от Ghbphfr Посмотреть сообщение
doInBackground(String... urls)
Коль скоро у вас есть конструктор класса, вынесите все параметры туда, а в doInBackground напишите просто: doInBackground(Void... params).
mr_lancevrot
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 9
11.03.2016, 17:49     Получить json #3
Проверь то, что сказал товарищ выше И на будущее, прогугли Robospice в связке с retrofit, намного удобнее и быстрее, чем asynctask
Ghbphfr
0 / 0 / 0
Регистрация: 11.03.2016
Сообщений: 18
11.03.2016, 18:55  [ТС]     Получить json #4
Перед публикацией скрипта на shared хостинг я хочу приложение настроить, чтобы потом просто url поменять и опубликовать в googleplay
Мне удалось выяснить, что виновато подключение к локалке. Я использовал jsoup и метод приведенный выше. В обоих случаях ошибка ниже. В google сказали поменять порт на 8080 и указать localhost . Но почему то не сработало.
Java
1
String json = Jsoup.connect(params[0]).timeout(1000000).ignoreContentType(true).execute().body();
JSON
1
java.net.ConnectException: failed to connect to /127.0.0.1 (port 8000) after 1000000ms: isConnected failed: ECONNREFUSED (Connection refused)
<uses-permission android:name="android.permission.INTERNET" /> прописан

Как исправить эту ошибку? В чем причина ошибки я не понимаю.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
12.03.2016, 00:28     Получить json #5
Ghbphfr, так 8080 или 8000? И причём тут localhost?
Ghbphfr
0 / 0 / 0
Регистрация: 11.03.2016
Сообщений: 18
12.03.2016, 18:26  [ТС]     Получить json #6
CoolMind, Решение ошибки описано тут ссылка, и как то связано вот это

Мне нужно просто подключаться к локалхосту, но у меня не получается. Обычные сайты с доменами парсятся без проблем.

Добавлено через 1 час 48 минут
The localhost refers to the device on which the code is running, in this case the emulator.

If you want to refer to the computer which is running the Android simulator, use the IP address 10.0.2.2 instead. You can read more from here.
Локальный относится к устройству, на котором код выполняется, в этом случае эмулятор.

Если вы хотите обратиться к компьютеру, который работает на Android симулятор, использовать IP-адрес 10.0.2.2 вместо этого. Вы можете прочитать больше здесь.
К какому адресу мне обращаться я не понимаю.

Добавлено через 10 часов 43 минуты
Прошу прощения. Изначально вопрос был про работу с json. В итоге вопрос вылился в другую тему и быть может мне поэтому сразу не помогли. Но решил проблему я по следующим статьям: 1)Accessing a localhost server from the Genymotion Android emulator 2) How to Run an Android App against a localhost API 3)How to connect Localhost in your MAC to your Android Device OR Android Emulator

Запустил сервере по http://127.01.01:8080 или http://localhost:8080

И в коде запуская через эмулятор Genymotion поменял строку запроса, он и в webbrowser так же сработает, я не с того конца подошел
Java
1
2
3
        String url = "http://10.0.3.2:8080/galleries/?format=json&page=1";
        final DownloadJson load = new DownloadJson();
        load.execute(url);
Yandex
Объявления
12.03.2016, 18:26     Получить json
Ответ Создать тему
Опции темы

Текущее время: 05:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru