Url.openConnection()正在抛出ProtocolException

时间:2016-11-30 11:37:54

标签: android httpurlconnection android-networking

我正在尝试请求包含我的应用配置的网址。在桌面上请求URL正在运行。但是,当我尝试在我的Android应用程序中发出请求时,我收到以下错误。

W/System.err: java.net.ProtocolException: Too many follow-up requests: 21
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:417)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:251)
W/System.err:     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
W/System.err:     at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
...

我尝试使用Http协议请求相同的链接并获得了不同的错误

W/System.err: java.io.FileNotFoundException: http://www-dev...
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:258)
W/System.err:     at .networking.ResourceLoaderTask$override.doInBackground(ResourceLoaderTask.java:45)
W/System.err:     at .networking.ResourceLoaderTask$override.access$dispatch(ResourceLoaderTask.java)
W/System.err:     at .networking.ResourceLoaderTask.doInBackground(ResourceLoaderTask.java:0)
W/System.err:     at .networking.ResourceLoaderTask.doInBackground(ResourceLoaderTask.java:19)
W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
...

documentation中它说我可以禁用重定向,但问题是重定向在我的情况下是必须的。即使在我的浏览器中请求Url,它也会重定向到新的链接。

我的AsyncTask #doInBackground就像下面的

@Override
    protected String doInBackground(String... params) {
        URL url;
        HttpURLConnection ucon = null;
        try {
            String uri = params[0];                
            url = new URL(NetworkUtil.wrapURL(uri));
            ucon = (HttpURLConnection) url.openConnection();
            ucon.setRequestProperty("User-Agent", params[1]);        
            logUrl(ucon, url);   
            InputStream input = ucon.getInputStream();

            java.util.Scanner s = new java.util.Scanner(input).useDelimiter("\\A");
            String resource = s.hasNext() ? s.next() : "";
            ucon.disconnect();

            return resource;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            ucon.disconnect();
        }
        return null;
    }

0 个答案:

没有答案