Android使用HttpURLConnection的302重定向问题
2017-06-28 15:03
1251 查看
HttpURLConnection编程基础原理
在Android中,HttpURLConnection是比较基础的网络编程,因此在入门的时候建议大家学会使用这个编程,有助于大家了解其原理。这里就简单介绍一下,因为我们这篇博客主要解决的问题是如何解决收到结果不是200,--------------
而是302重定向问题。
使用HttpURLConnection编程原理
我们编程时候遵循一下几个步骤:创建一个URL对象
URL url = new URL(http://www.baidu.com);1
利用HttpURLConnection对象从网络中获取网页数据
HttpURLConnection conn = (HttpURLConnection) url.openConnection();1
设置连接超时
conn.setConnectTimeout(6*1000);1
对响应码进行判断
if (conn.getResponseCode() != 200) //从Internet获取网页,发送请求,将网页以流的形式读回来 throw new RuntimeException("请求url失败");1
2
3
得到网络返回的输入流
InputStream is = conn.getInputStream();1
响应码不是200时而是302时,解决办法
首先需要获取head头里面的location内容,因此地址被重定向了,因此我们需要获取对应的重定向的地址。String url_str = et_url.getText().toString().trim(); URL url = new URL(url_str); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(3000); //Toast.makeText(mContext,urlConnection.getResponseCode() + "", 0).show(); System.out.println("getResponseCode"+urlConnection.getResponseCode()+
以上就是原始代码了,因此我们应该获取其head中的location,查看现在的地址
String location = urlConnection.getHeaderField("Location"); System.out.println("location"+location+"");
拿到了新的地址,接下来我们应该寻找这个新的地址了
url = new URL(location); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(3000); if(urlConnection.getResponseCode() == 200){ InputStream in = urlConnection.getInputStream(); String result = StreamUtils.getResult(in); if(result != null){ Message msg = new Message(); msg.obj = result; handler.sendMessage(msg); } }
相关文章推荐
- Android使用HttpURLConnection编程遇到的302重定向问题
- Android 使用URL,URLConnection,HttpConnection 不能通信的问题
- Android 6.0 使用HttpURLConnection 使用Get提交遇到405等问题。
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- Android使用HttpUrlConnection get请求带中文参数的编码问题
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- 【Android开发那点破事】解决Andriod使用HttpURLConnection 失败问题
- 关于Android使用HttpURLConnection传输含有中文JSON数据的报错、乱码问题
- Android的网络应用-使用HttpURLConnection
- Android开发之使用HttpURLConnection进行POST请求
- Android使用HttpURLConnection显示网络图片
- 解决Andriod使用HttpURLConnection 失败问题
- 使用HttpURLConnection时遇到的资源未释放的问题
- Android开发_使用HttpURLConnection实现多线程下载
- Android 4.0 HttpUrlConnection的getInputStream()方法总是返回空的问题
- Android HttpURLConnection对象使用
- Android平台下使用HttpUrlConnection
- Android访问网络,使用HttpURLConnection还是HttpClient?
- android 4.0 HttpURLConnection. getInputStream() 为空的问题
- 使用HttpURLConnection做代理时遇到的cookie放不进去的问题