#java #android #сеть
Есть обработчик нажатия кнопки. При нажатии должен выполнится сетевой запрос. Написал по уроку простой метод для отправки http-запросов. Получил эту ошибку android.os.NetworkOnMainThreadException Почитал, что это связано с тем, что запрос выполняется в UI потоке. Ладно. Создал отдельный поток. public void reportSend(View v) { th = new Thread(new Runnable() { @Override public void run() { Log.i("TAG","MSG"); HttpURLConnection connection = null; StringBuilder sb = new StringBuilder(); try { connection = (HttpURLConnection) new URL ("http://spaces.ru").openConnection(); connection.connect(); if(connection.HTTP_OK == connection.getResponseCode()) { BufferedReader input = new BufferedReader(new InputStreamReader( connection.getInputStream(), "cp1251")); String line; while ((line = input.readLine()) != null) { sb.append(line); sb.append("\n"); } } } catch (Exception cause) { cause.printStackTrace(); // Toast.makeText(MainActivity.this, cause.getMessage().toString(), Toast.LENGTH_LONG).show(); } finally { if(connection != null) connection.disconnect(); } Log.i("NET", sb.toString()); } }); th.run(); } Ошибка тем не менее сохранилась прежняя. Как выйти из положения?
Ответы
Ответ 1
Метод Thread.run() выполнит код синхронно, в том же потоке, замените на start()
Комментариев нет:
Отправить комментарий