为了实现这个功能。在网上寻找的获取重定向的方法,出现了两个问题,摸索了半天。
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(); }