Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getInputStream失败(HttpURLConnectionImpl.java:238)_Android_Http_Https - Fatal编程技术网

Android getInputStream失败(HttpURLConnectionImpl.java:238)

Android getInputStream失败(HttpURLConnectionImpl.java:238),android,http,https,Android,Http,Https,症状: 无法完成getInputStream。它使用代码失败(HttpURLConnectionImpl.java:238) 原始错误日志: 05-25 17:57:06.473 2675-2722/com.manatial.raul.photogallery E/TAG:FlickrFetchr无法获取项目 java.io.FileNotFoundException: 位于com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInpu

症状:

无法完成
getInputStream
。它使用代码失败(
HttpURLConnectionImpl.java:238

原始错误日志:

05-25 17:57:06.473 2675-2722/com.manatial.raul.photogallery E/TAG:FlickrFetchr无法获取项目 java.io.FileNotFoundException: 位于com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238) 位于com.manatial.raul.photogallery.FlickrFetchr.getUrlBytes(FlickrFetchr.java:37) 位于com.manatial.raul.photogallery.FlickrFetchr.getUrl(FlickrFetchr.java:69) 位于com.manatial.raul.photogallery.FlickrFetchr.fetchItems(FlickrFetchr.java:79) 位于com.manatial.raul.photogallery.PhotoGalleryFragment$FetchItemsTask.doInBackground(PhotoGalleryFragment.java:45) 位于com.manatial.raul.photogallery.PhotoGalleryFragment$FetchItemsTask.doInBackground(PhotoGalleryFragment.java:36) 在android.os.AsyncTask$2.call(AsyncTask.java:295) 位于java.util.concurrent.FutureTask.run(FutureTask.java:237) 在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 运行(Thread.java:818)


HttpURLConnection getResponseCode
=403/HTPP\u禁止


通过web浏览器使用相同的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();
    }

代码中使用的URL为:

当通过浏览器使用它时,它被转换为https,但当通过我的测试Android应用程序使用它时,它就不会被转换为https。解决方案只是在代码中将URL调整为https: