Страницы

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

среда, 13 февраля 2019 г.

Как отправить HTTP запрос из 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());
Если закомментировать последнюю строку, то ничего не происходит. Если же её оставить, то приложение компилируется, но во время выполнения выскакивает сообщение
В приложении "ХХХ" произошла ошибка
и оно аварийно закрывается.


Ответ

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

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

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