Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Ghbphfr
0 / 0 / 0
Регистрация: 11.03.2016
Сообщений: 18
#1

Получить json

11.03.2016, 15:57. Просмотров 320. Ответов 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 ответы? Что я делаю не так?

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2016, 15:57
Ответы с готовыми решениями:

Не получается получить json
Пытаюсь получить json строку с http://217.12.194.171:31/server/api/users/getusers Использую для...

Не могу получить json по https
Доброго времени суток не могу получить json по https коннект проходит package...

Получить json в ответ на POST запрос
Никак не могу добиться получения json с помощью вывода его через echo в PHP скрипте. Если...

Послать POST запрос с параметрами и получить json
Всем привет! Столкнулся с проблемой. Как послать POST запрос и получить назад результат json. ...

Как получить все значения id из Json? Android Studio
Работаю в Android Studio с VK API. Я получил Json при GET-запросе. В нём содержится следующее: ...

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

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

Добавлено через 1 минуту
Цитата Сообщение от Ghbphfr Посмотреть сообщение
doInBackground(String... urls)
Коль скоро у вас есть конструктор класса, вынесите все параметры туда, а в doInBackground напишите просто: doInBackground(Void... params).
1
mr_lancevrot
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 9
11.03.2016, 17:49 #3
Проверь то, что сказал товарищ выше И на будущее, прогугли Robospice в связке с retrofit, намного удобнее и быстрее, чем asynctask
0
Ghbphfr
0 / 0 / 0
Регистрация: 11.03.2016
Сообщений: 18
11.03.2016, 18:55  [ТС] #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" /> прописан

Как исправить эту ошибку? В чем причина ошибки я не понимаю.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
12.03.2016, 00:28 #5
Ghbphfr, так 8080 или 8000? И причём тут localhost?
0
Ghbphfr
0 / 0 / 0
Регистрация: 11.03.2016
Сообщений: 18
12.03.2016, 18:26  [ТС] #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);
0
12.03.2016, 18:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2016, 18:26

Получить json в приложении и вывести его в listview во фрагмент
Здравствуйте, у меня такая проблема не могу разобраться как получить json в приложение и вывести...

Получить JSON и передать все его параметры его в Intent. Использован автофильтр
Всем привет. Я тут запутался, помогите разобраться. Стоит задача выполнить такой функционал:...

Ошибка - Errororg.json.JSONExceprion: Value bd.json of type java.lang.String cannot be converted to JSONObject
Здравствуйте! Есть база данных bd.json, которая находится в проекте в папке assets. Вот содержимое...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru