Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 27.05.2018
Сообщений: 147

Не работает веб запрос

22.03.2022, 20:58. Показов 448. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, никак не могу выполнить веб запрос. Возвращает исключение android.os.NetworkOnMainThreadException. Гуглил и по советам пробовал оборачивать в runOnUiThread() и в handler.post() но ничего не меняло, та же ошибка.
Библиотека подключена так:
Code
1
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
Метод с запросом:
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
    public static String GetFromWeb()
    {
        try
        {
            OkHttpClient client = new OkHttpClient();
            String url = "https://api.ipify.org/?format=json";
            Request request = new Request.Builder()
                    .url(url)
                    .build();
 
            Response response = client.newCall(request).execute();
            if (response.code() == 200)
            {
                String result = response.body().string();
                return result;
            }
            else
                return "Error: " + response.code();
        }
        catch (Exception e)
        {
            return "Exception " + e.getClass().toString() + ": " + e.getMessage();
        }
    }
Вызов:
Java
1
2
3
4
5
6
7
testButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String result = Funcs.GetFromWeb();
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
            }
        });
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2022, 20:58
Ответы с готовыми решениями:

Не работает SQL запрос с веб формы (учебный материал)
Добрый. Решил научиться использовать базы данных в php. Работаю по книге Бретта Маклафлина php и mysql исчерпывающее руководство 2е...

Встроенный в PSPad editor браузер выдаёт ошибку: Веб-сайт отклонил запрос на отображение веб-страницы
навеяло отсюда https://www.cyberforum.ru/php-beginners/thread726600.html#post4937346 Ребят, а в чём у меня может быть косяк, при...

не работает в ворде веб компонент,и скачав обновление ow 11 не работает все равно
проблема с веб элементами и обновлениями на них))

7
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
23.03.2022, 01:24
Цитата Сообщение от onefreddy Посмотреть сообщение
NetworkOnMainThread
И кто тебе посоветовал оборачивать в runOnUiThread, тут даже в названии чётко прослеживается нестыковка. Запросы нельзя запускать в главном потоке.
0
1 / 1 / 0
Регистрация: 27.05.2018
Сообщений: 147
23.03.2022, 12:20  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
И кто тебе посоветовал оборачивать в runOnUiThread, тут даже в названии чётко прослеживается нестыковка. Запросы нельзя запускать в главном потоке.
А так это и есть главный поток? Я ожидал название что то типа runOnMainThread, хотя UI Thread меня тоже смущает. Писали на разных сайтах при этой ошибке юзать вот и попробовал. Щас вроде нашел какое то другое решение с каллбаеками, но это все настолько уродски выглядит по сравнению с аналогичными действиями на других языках типа c++, c#.. Ты можешь переделать мой пример чтобы я мог вызывать функцию и получать результат с нее напрямую?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
23.03.2022, 12:29
Возьми другой фреймворк для запросов, если это такие сложности доставляет. А ещё лучше изучи корутины или rx, и запросы будут выглядеть как-то так:
Java
1
2
3
4
5
6
api.someRequest()
        .subscribeOn(Schedulers.single())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribeBy{result ->
             Toast.makeText(context, result, Toast.LENGTH_SHORT).show()
        }
0
1 / 1 / 0
Регистрация: 27.05.2018
Сообщений: 147
23.03.2022, 12:37  [ТС]
А какие есть фреймворки запросов еще хорошие? ну если знаешь конечно...
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
23.03.2022, 12:59
Это гуглится легко. Вроде бы Volley ещё проще в использовании. Но если нужно для реальной работы, то лучше двигаться куда-то в сторону Retrofit.
1
1 / 1 / 0
Регистрация: 27.05.2018
Сообщений: 147
25.03.2022, 15:48  [ТС]
ExFau$t, хочу сказать спасибо за наводки. Retrofit оказалось таким же гавнецом как и okhttp. Собственно не удивительно, автор один и тот же и Retrofit это обертка над okhttp. Все те же проблемы с потоками там есть и это только вершина айсебрга. А вот когда я затестил Volley, прям 9 из 10ти. Шикарное решение во всех смыслах, я оставляю его как действующее. Тему можно закрывать.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
25.03.2022, 18:33
Retrofit - один из лучших и самых удобных фреймворков для сетевых запросов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2022, 18:33
Помогаю со студенческими работами здесь

Веб камера не работает в видео чатах вооще, в скайпе работает
Что делать если я подключил домашний интернет homeuser и теперь веб камера не работает в видео чатах вооще, в скайпе работает. А при помоще...

Сайт не работает на веб-хостинге, на локальном работает
Такой момент. Разместил сайт на веб-хостинге. Появляются различные ошибки, в основном при обращении к бд. Подключился к удаленной бд с...

запрос веб-страницы
Вот хочу просто запросить страницу (только первое кило) и вывести html код в консоль. но что-то компилятор капризничает... #include...

Веб-запрос на яве
Есть такой кусок кода, подсмотрел здесь: https://www.youtube.com/watch?v=AfeCjJ08SKw&t=403s import java.net.HttpURLConnection; import...

Обработать веб-запрос
Добрый вечер! Как на чистом Си реализовать принятие данных запроса (GET, POST) и отправку ответа, и всё это в рамках HTTP/2 (h2 https)?...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru