HttpURLConnection碰到连续302跳转的问题的原因及解决方法
2013-06-30 23:24
483 查看
用HttpURLConnection联网的代码:
HttpURLConnection conn = null;
URL url = new URL("http://10.0.0.172/");
conn = (HttpURLConnection) url.openConnection();
conn .setRequestMethod("POST");
conn .setDoInput(true);
conn .setDoOutput(true);
conn.setRequestProperty("X-Online-Host","www.xxxx.com");
conn.setConnectTimeout(30000); // 30秒超时
conn.connect();
如果返回的页面是一个302跳转,会自动跳转,但是如果跳转过去后还是一个302跳转,就卡在connect()这里了,超时之后一个 connection reset 的 exception. 不论Get还是Post方法,都一样问题。用setFollowRedirects关掉自动重定向,还是connection reset. 查了很长时间,还是弄不出个所以然来,看HttpURLConnection 的实现代码,redirect大于4次才会抛出一个Too many redirects
的异常,这才两个302就挂了...最后换用org.apache.http包里的东西,就没有问题。
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("10.0.0.172", 80);
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,proxy);
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),20 * 1000);
HttpConnectionParams.setSoTimeout(httpClient.getParams(), 20 * 1000);
HttpGet httpget = new HttpGet(theurl);
HttpResponse response = httpClient.execute(httpget);
无论是自动跳转还是手动处理跳转都没有问题。
HttpURLConnection conn = null;
URL url = new URL("http://10.0.0.172/");
conn = (HttpURLConnection) url.openConnection();
conn .setRequestMethod("POST");
conn .setDoInput(true);
conn .setDoOutput(true);
conn.setRequestProperty("X-Online-Host","www.xxxx.com");
conn.setConnectTimeout(30000); // 30秒超时
conn.connect();
如果返回的页面是一个302跳转,会自动跳转,但是如果跳转过去后还是一个302跳转,就卡在connect()这里了,超时之后一个 connection reset 的 exception. 不论Get还是Post方法,都一样问题。用setFollowRedirects关掉自动重定向,还是connection reset. 查了很长时间,还是弄不出个所以然来,看HttpURLConnection 的实现代码,redirect大于4次才会抛出一个Too many redirects
的异常,这才两个302就挂了...最后换用org.apache.http包里的东西,就没有问题。
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("10.0.0.172", 80);
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,proxy);
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),20 * 1000);
HttpConnectionParams.setSoTimeout(httpClient.getParams(), 20 * 1000);
HttpGet httpget = new HttpGet(theurl);
HttpResponse response = httpClient.execute(httpget);
无论是自动跳转还是手动处理跳转都没有问题。
相关文章推荐
- HttpURLConnection碰到连续302跳转的问题的原因及解决方法
- HttpURLConnection碰到连续302跳转的问题
- HttpURLConnection碰到连续302跳转的问题
- HttpURLConnection碰到连续302跳转的问题
- HttpURLConnection 访问网页异常 问题的解决方法
- 如何解决在HttpURLConnection的getInputStream方法调用时出错的问题
- 百度地图API 云存储·LBS.云 跨域问题解决方法——通过java.net.URLConnection发送HTTP请求
- 转载---HttpUrlConnection发送post请求汉字出现乱码的一个解决方法及其原因
- android中HttpURLConnection调用getResponseCode()时崩溃 解决方法
- 解决Fiddler不能监听Java HttpURLConnection请求的方法
- HttpURLConnection.getContentLength()为-1 解决方法
- 关于HttpURLConnection遇到ava.io.FileNotFoundException的解决方法
- [Android]解决HttpURLConnection上传大文件时出现OOM问题
- 解决HttpUrlConnection乱码问题
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- Android 4.0 HttpUrlConnection的getInputStream()方法总是返回空的问题
- Connection is read-only问题的产生原因与解决方法
- Android HttpURLConnection.getResponseCode()错误解决方法
- HttpURLConnection获取网页内容,解决乱码的通用方法
- 解决Fiddler不能监听Java HttpURLConnection请求的方法