#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.
Комментариев нет:
Отправить комментарий