当使用HttpURLConnection访问A地址,但是A地址内部会自动重定向到B地址,因为我们是会HttpURLConnection方式访问接口,故我们应用无法直接重定向到B地址,此时需要我们通过HttpURLConnection获取重定向后的B地址返回给前端,让前端去访问B地址,达到跳转的目的。
(对于页面表单访问A地址的话,浏览器会自动帮我们重定向到B地址,完成重定向过程)
一、该方式可以获取重定向地址,但是访问地址时存在问题
URL url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
System.out.println("返回码: " + conn.getResponseCode());
//如果定向的地址经过重定向,
//那么conn.getURL().toString()显示的是重定向后的地址
System.out.println(conn.getURL().toString());
二、此方式经过验证,获取和访问重定向地址均没问题
当使用HttpURLConnection访问A地址,但是A地址内部会自动重定向到B地址,因为我们是会HttpURLConnection方式访问接口,故我们应用无法直接重定向到B地址,此时需要我们通过HttpURLConnection获取重定向后的B地址返回给前端,让前端去访问B地址,达到跳转的目的。(对于页面表单访问A地址的话,浏览器会自动帮我们重定向到B地址,完成重定向过程)一、该方式可以获...
private void requestNetData () {
try {
URL
url
= new
URL
("http://www.toutiao.com/stream/widget/local_weather/data/?city=%E5%8C%97%E4%BA%AC");
HttpURLConnection
urlConnection
= (Http
URL
Conn
ecti...
URLConnection
从HTTP
重定向
到HTTPS 也不知什么原因,公司项目的服务端一直在吸引着大波攻击,于是服务端的同学打算把所有HTTP的请求都换为HTTPS,他们决定兼容旧版本于是就将之前的所有HTTP请求全部
重定向
到另一个HTTPS请求。
项目请求框架搭建初期,考虑到应用也不会使用太复杂的请求模式,于是就简单使用
URLConnection
完成服务端交互。服务端一修改,全部请求都失败了
HttpURLConnection
使用
中
的一个
问题
,就是当连接到的那个
地址
重定向
到另一个
地址
时,怎么样
获得
那个
重定向
后的
地址
,弄了一下,找出了方法,结果起先我们两个都没想到,嘿嘿,在此记录一下。
HttpURLConnection
是基于HTTP协议的,其底层通过socket通信实现。下面来看一个例子:
今天跟TiGERTiAN谈到
HttpURLConnection
使用
中
的一个
问题
,就是当连接...
正常来说,java代码发起HTTP请求到一个
重定向
的接口,请求的结果为接口内
重定向
后页面的html源码。对于这种
重定向
接口,查看控制台可以看到,其
重定向
后的
地址
在Response Headers
中
的
Location
属性
中
:
查阅文档可知
HttpURLConnection
有如是方法:
其父类
URLConnection
有如是方法:
显然,可以在第一个方法
中
设置参数为false,第二个方法
中
参数设置
String
url
="http://.。。。.com";
//
获取
文件流
con = (
HttpURLConnection
) new
URL
(
url
).open
Conn
ection();
con.
set
Conn
ectTimeout(15000);
con.
set
ReadTimeout(15000);
con.
set
Instance
Follow
Redirect
s(false);
为了实现这个功能。在网上寻找的
获取
重定向
的方法,出现了两个
问题
,摸索了半天。
1、
获取
的返回code为200.原因为,get请求为自动
重定向
,设置了取消。如下设置取消取消
重定向
。
HttpClient client = new DefaultHttpClient();
HttpParams params = client.ge
private static String get
Redirect
Url
(String
url
) throws IOException {
HttpURLConnection
conn
= (
HttpURLConnection
) new
URL
(
url
).open
Conn
ection();
conn
.
set
Instance
Follow
Redirect
s(false);
conn
.
set
Con...
* 发送请求的
URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @param encode