Страницы

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

суббота, 14 декабря 2019 г.

Исключение NetworkOnMainThreadException

#android #httpurlconnection


Возникла проблема: при обращении к http-серверу появляется исключение android.os.NetworkOnMainThreadException,
сложность в том, что исключение происходит внутри класса, наследованного от AsyncTask.

Фрагмент кода:

public class NH {
public static String URL_SERVER = "http://myserver.com/";
public static String DIR_IMAGES = "images/";

public void updateData() {
    List imgFiles = new ArrayList();
    imgFiles.add("t001.png");
    imgFiles.add("t002.png");
    imgFiles.add("t003.png");

    for (String img :imgFiles) {
        (new GetImages()).doInBackground(img);
    }
}

class GetImages extends AsyncTask {

    @Override
    private Void doInBackground(String... params) {
        String imgName = params[0];

        try {
            URL url = new URL( URL_SERVER + DIR_IMAGES + imgName);

            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setDoInput(true);
            httpURLConnection.setDoOutput(true);
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(httpURLConnection.getInputStream(),"UTF-8"));

            in.close();
        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        return null;
    }
}
}


Результат: 'log_tag: Error in http connection android.os.NetworkOnMainThreadException'

Среда разработки: Android Studio 1.5.1

Спасибо за помощь!
    


Ответы

Ответ 1



AsyncTask нужно запускать методом execute(); , а вы запускаете всего лишьт его метод doInBackground

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

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