我正在尝试请求包含我的应用配置的网址。在桌面上请求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;
}