Форум программистов, компьютерный форум, киберфорум
Наши страницы

Get запрос с выводом полученной информации на экран - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как можно узнать может ли супер класс кастануться в субкласс http://www.cyberforum.ru/android-dev/thread1652759.html
В общем, у меня есть класс Диета, который состоит из Рационов, которые состоят из приемов пищи, которые состоят из продуктов и все они наследуются от абстрактного класса, который содержит в себе...
Программирование Android Сортировка кнопок по названию (номерам) Здравствуйте, подскажите пожалуйста в чем проблема и как из нее выйти: есть ArrayList кнопок, у них названия - случайные номера, когда я пытаюсь отсортировать их через Comparator compare и... http://www.cyberforum.ru/android-dev/thread1652705.html
Программирование Android Vk-android-sdk
Всем доброго дня! Вопрос связан с Android SDK для vk. Собственно ошибка у меня появляется в момент авторизации {"error":"invalid_client","error_description":"client_id incorrect"} Все делал...
Не видно DrawerLayout Программирование Android
Здравствуйте! Помоги разобраться с DrawerLayout. Весь код на скринах 1-3. Проблема в отображении, а точнее не отображения DrawerLayout. На скринах 4-5 видно что DrawerLayout есть,только при...
Программирование Android Зашифровать Sqlite http://www.cyberforum.ru/android-dev/thread1652529.html
Привет. Приложение активно работает со своей базой, хранит много данных. Я хотел бы зашифровать все таблицы в моей базе но при этом, чтобы для приложения это было менее затратно, ну допустим вся...
Программирование Android Способы разработки игр Тема трололо Фирма занимающаяся разработкой игр кого предпочтет, человека умеющего пользовать какой либо игровой движок или обычно они сами пишут себе движки свои-собственные? подробнее

Показать сообщение отдельно
Pablito
2616 / 2099 / 652
Регистрация: 12.05.2014
Сообщений: 7,354
Завершенные тесты: 1
01.02.2016, 20:18
Я могу показать как делать с помощью okhttp client-а. Мне так привычнее.
Внимательно по шагам.

1. Подключаем библиотеки okhttp и gson (для парсинга json строки в объект)
в файле build.gradle дописываем
XML
1
2
compile 'com.google.code.gson:gson:1.7.2'
compile 'com.squareup.okhttp3:okhttp:3.0.0-RC1'
2. Создаем класс-модель для ответа от сервера. В код этого класса можно сильно не вчитываться, там по сути несколько полей, а остальное это геттеры-сеттеры.
Кликните здесь для просмотра всего текста
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
class AkulovResponse {
 
    private String status;
    private Discounts[] discounts;
 
    public String getStatus() {
        return status;
    }
 
    public void setStatus(String status) {
        this.status = status;
    }
 
    public Discounts[] getDiscounts() {
        return discounts;
    }
 
    public void setDiscounts(Discounts[] discounts) {
        this.discounts = discounts;
    }
 
    static class Discounts {
        private String id;
 
        private String end_date;
 
        private String discount_text;
 
        private String start_date;
 
        private String customer_id;
 
        public String getId() {
            return id;
        }
 
        public void setId(String id) {
            this.id = id;
        }
 
        public String getEnd_date() {
            return end_date;
        }
 
        public void setEnd_date(String end_date) {
            this.end_date = end_date;
        }
 
        public String getDiscount_text() {
            return discount_text;
        }
 
        public void setDiscount_text(String discount_text) {
            this.discount_text = discount_text;
        }
 
        public String getStart_date() {
            return start_date;
        }
 
        public void setStart_date(String start_date) {
            this.start_date = start_date;
        }
 
        public String getCustomer_id() {
            return customer_id;
        }
 
        public void setCustomer_id(String customer_id) {
            this.customer_id = customer_id;
        }
    }
}


3. Как уже правильно сказали выше, операции с сетью надо делать в отдельном потоке, поэтому создаем в активити метод makeRequest()
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    private void makeRequest(final String url) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                OkHttpClient client = new OkHttpClient();
                Request request = new Request.Builder().url(url).build();
                try {
                    Response response = client.newCall(request).execute();
                    Gson gson = new Gson();
                    AkulovResponse akulovResponse = gson.fromJson(response.body().string(), AkulovResponse.class);
                    printResult(akulovResponse);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
Можно было сделать и на асинк таске, но пока что и так пойдет, кода меньше и проще.

4. создаем в активти метод, который вызовется когда наша задача отработает и вернет нам готовый объект
Java
1
2
3
4
5
6
7
8
9
    private void printResult(AkulovResponse response) {
        Log.i("***", response.getStatus());
        AkulovResponse.Discounts[] discounts = response.getDiscounts();
        Log.i("***", "" + discounts.length);
        if (discounts.length > 0) {
            String text = discounts[0].getDiscount_text();
            Log.i("***", text);
        }
    }
5. вызываем метод, где-то в onCreate()
Java
1
makeRequest("http://www.akulov.xyz/discounts/b9407f30f5f8466eaff925556b57fe6d");
6. PROFIT

Добавлено через 8 минут
поправочка, там текст description в BASE64, поэтому метод printResult немного изменить
Java
1
2
3
4
5
6
7
8
9
10
11
    private void printResult(AkulovResponse response) throws UnsupportedEncodingException {
        Log.i("***", response.getStatus());
        AkulovResponse.Discounts[] discounts = response.getDiscounts();
        Log.i("***", "" + discounts.length);
        if (discounts.length > 0) {
            String text = discounts[0].getDiscount_text();
            byte[] data = Base64.decode(text, Base64.DEFAULT);
            text = new String(data, "UTF-8");
            Log.i("***", text);
        }
    }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru