Что не так с этим кодом?
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
Комментариев нет:
Отправить комментарий