Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Как отправить HTTP запрос из Android-приложения?

#java #android


Что не так с этим кодом?

import java.io.*;
import java.net.*;

...

URL url = new URL(e.getText().toString());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());


Если закомментировать последнюю строку, то ничего не происходит. Если же её оставить,
то приложение компилируется, но во время выполнения выскакивает сообщение

В приложении "ХХХ" произошла ошибка


и оно аварийно закрывается.
    


Ответы

Ответ 1



Запрос отправляется при вызове getInputStream(); Скорее всего, ошибка, которую вы видите говорит вам о том, что вы делаете HTTP запрос в главном потоке Android приложения (если это не так, дополните вопрос). Интернет запросам свойственно занимать много времени, а главный поток предназначен прежде всего для обработки и отображения пользовательского интерфейса, который должен реагировать на действия пользователя быстро. Поэтому, необходимо создать новый поток: Thread t = new Thread(new Runnable(){ public void run(){ //Ваш код для запроса } }).start(); Или, вы можете использовать AsyncTask. Подробнее о нем и вообще о потоках тут: https://habrahabr.ru/post/124484/ Учтите, что Вы не сможете ничего делать с элементами интерфейса не из главного потока. Для того, чтобы выполнить код в главном потоке, используйте Activity.runOnUiThread.

Комментариев нет:

Отправить комментарий