为了实现这个功能。在网上寻找的获取重定向的方法,出现了两个问题,摸索了半天。
1、获取的返回code为200.原因为,get请求为自动重定向,设置了取消。如下设置取消取消重定向。
HttpClient client = new DefaultHttpClient();
HttpParams params = client.getParams();params.setParameter(ClientPNames.HANDLE_REDIRECTS, false);
2、重定向的地址需要这样获取。
HttpEntity entity = response.getEntity();
if(null != entity){
Header[] headers = response.getHeaders("Location");
if(headers!=null && headers.length>0){
String redirectUrl = headers[0].getValue();
Log.e("","124578-定向的URL重:" + redirectUrl);
}
}
3、这个是获取请求的url。(HttpUriRequest request = (HttpUriRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST);)
而不是重定向的地址。重定向地址在2中,说明。
请求的实例。已验证,可以正常获取。
HttpClient client = new DefaultHttpClient();
HttpParams params = client.getParams();params.setParameter(ClientPNames.HANDLE_REDIRECTS, false);
HttpContext context = new BasicHttpContext();
HttpGet get = new HttpGet(url);
try {
HttpResponse response = client.execute(get,context);
HttpHost host = (HttpHost) context.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
HttpUriRequest request = (HttpUriRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST);
int code = response.getStatusLine().getStatusCode();
Log.e("","--124578----host:"+host+",request:"+request.getRequestLine()+",rul:"+request.getURI()+ ",code"+code);
HttpEntity entity = response.getEntity();
if(null != entity){
Header[] headers = response.getHeaders("Location");
if(headers!=null && headers.length>0){
String redirectUrl = headers[0].getValue();
Log.e("","124578-定向的URL重:" + redirectUrl);
}
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}