Сбой Android getInputStream (HttpURLConnectionImpl.java:238) - PullRequest
0 голосов
/ 25 мая 2018

Симптомы:

Невозможно завершить getInputStream.Ошибка с кодом (HttpURLConnectionImpl.java:238)

Исходный журнал ошибок:

05-25 17: 57: 06.473 2675-2722 / com.manantial.raul.photogallery E / TAG: FlickrFetchr Не удалось получить элементы java.io.FileNotFoundException: http://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=6f722a706254ed716d5abb9fb1f012c7&extras=url_s в com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:238) в com.mananrch.photo.photo.getUrlBytes (FlickrFetchr.java:37) в com.manantial.raul.photogallery.FlickrFetchr.getUrl (FlickrFetchr.java:69) в com.manantial.raul.photogallery.FlickrFetchr.fetchItems (FlickrFetchr.java:79) в com..raul.photogallery.PhotoGalleryFragment $ FetchItemsTask.Java: 295) вt.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:588) в java.lang.Thread.run (Thread.java:818) * 10121013 *


HttpURLConnection getResponseCode = 403 / HTPP_FORBIDDEN


При использовании того же URL-адреса через веб-браузер ошибка отсутствует, и getResponseCode в порядке / 200.

Факты:

Используемый код:

try {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        InputStream in = connection.getInputStream(); // fails, while HttpURLConnection = HTTP_FORBIDDEN 403


        if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {  // connection resp code 403 FORBIDDEN
            return null;
        }


        int bytesRead = 0;
        byte[] buffer = new byte[1024];
        while ((bytesRead = in.read(buffer)) > 0) {
            out.write(buffer, 0, bytesRead);
        }
        out.close();
        String temp = out.toByteArray().toString();
        Log.i("TAG", TAG + "out.toByteArray is the data response: " + temp);
        return out.toByteArray();


    } finally {
        Log.i("TAG", TAG + " connection response code: " + connection.getResponseCode());
        connection.disconnect();
    }

1 Ответ

0 голосов
/ 25 мая 2018

URL-адрес, использованный в коде, был:

http://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=6f722a706254ed716d5abb9fb1f012c7&extras=url_s

, который был преобразован в https при использовании его через браузер, но не при использовании его через мое тестовое приложение для Android.Решением было просто настроить URL для https в коде:

https://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=6f722a706254ed716d5abb9fb1f012c7&extras=url_s

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...