httpclient response 重定向
HTTPClient请求后,重定向后,获取重定向的URL。
方法一:重定向后获取URL
import org.apache.http.HttpEntity;import org.apache.http.HttpHost;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpUriRequest;import org.apache.http.entity.ContentType;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.protocol.BasicHttpContext;import org.apache.http.protocol.ExecutionContext;import org.apache.http.protocol.HttpContext;import org.apache.http.util.EntityUtils;public class HttpClientDemo { /** * 获取重定向之后的网址信息 * @see HttpClient缺省会自动处理客户端重定向 * @see 即访问网页A后,假设被重定向到了B网页,那么HttpClient将自动返回B网页的内容 * @see 若想取得B网页的地址,就需要借助HttpContext对象,HttpContext实际上是客户端用来在多次请求响应的交互中,保持状态信息的 * @see 我们自己也可以利用HttpContext来存放一些我们需要的信息,以便下次请求的时候能够取出这些信息来使用 */ public static void getRedirectInfo(){ HttpClient httpClient = new DefaultHttpClient(); HttpContext httpContext = new BasicHttpContext(); HttpGet httpGet = new HttpGet("http://127.0.0.1:8088/blog/main.jsp"); try { //将HttpContext对象作为参数传给execute()方法,则HttpClient会把请求响应交互过程中的状态信息存储在HttpContext中 HttpResponse response = httpClient.execute(httpGet, httpContext); //获取重定向之后的主机地址信息,即"http://127.0.0.1:8088" HttpHost targetHost = (HttpHost)httpContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST); //获取实际的请求对象的URI,即重定向之后的"/blog/admin/login.jsp" HttpUriRequest realRequest = (HttpUriRequest)httpContext.getAttribute(ExecutionContext.HTTP_REQUEST); System.out.println("主机地址:" + targetHost); System.out.println("URI信息:" + realRequest.getURI()); HttpEntity entity = response.getEntity(); if(null != entity){ System.out.println("响应内容:" + EntityUtils.toString(entity, ContentType.getOrDefault(entity).getCharset())); EntityUtils.consume(entity); } } catch (Exception e) { e.printStackTrace(); }finally{ httpClient.getConnectionManager().shutdown(); } }}HttpParams params = new BasicHttpParams();
params.setParameter("http.protocol.handle-redirects", false); // 默认不让重定向
post.setParams(params);
httpclient response 重定向的更多相关文章
- javaWeb中request请求转发和response重定向
1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL. 2.request.get Forward代码中的&q ...
- 20160322 javaweb 学习笔记--response 重定向
//一般方法 response.setStatus(302); response.setHeader("Location", "/20160314/index.jsp&q ...
- response重定向的网址中有中文乱码的解决办法
在servlet都是使用response对象来重定向到另一个页面:response.sendRedirect("--").现在遇到一个问题,网页的地址是带中文的,当执行到跳转命令的 ...
- Response重定向实现参数隐藏
最近在弄一个SSH项目,前期已经做好了,现在的需求是进行单点登陆实现,涉及到重定向跳转(带有参数那种)情况,但是不能在地址栏上出现参数的信息,需要进行参数的隐藏跳转.由于时间比较急,本人没来得及开发一 ...
- Servlet Response 重定向
重定向 response.sendRedirect("index.jsp"); //登录用户名不存在,重定向到index.jsp 1重定向在客户端发挥作用,通过浏览器重 ...
- response 重定向
背景: controller层需要重定向到其他html界面时,需要用如下代码 // 设置302状态码 response.setStatus(302); // 设置location响应头 respons ...
- httpclient 302 重定向
主要是由于页面可能不是通过 request.sendRedirect跳转的,可能通过js location跳转的.所以需要拿跳转后的 地址,重新发送请求...如下所示 if (status == H ...
- java WEB Response重定向和缓存控制
package cn.com; import java.io.IOException; import javax.servlet.ServletException; import javax.serv ...
- HttpClient 302重定向
CloseableHttpClient是线程安全的,单个实例可用于处理多个HTTP请求,Http Client会自动处理所有的重定向,关闭自动重定向需要设定disableAutomaticRetrie ...
随机推荐
- 中国省市位置描述JSON数据
数据包括:省.市.区县的行政编码,以及经纬度位置. {}对象的属性描述,如:{"no":"450400","latlng":"23 ...
- 超越css读书笔记
一.运用所有有效的css选择符 1.属性选择符(基于一个元素是否有属性名称,例如href,或者属性值) 例如:img[alt]{border:1px;} 所有包含alt属性的图像都将会有一个灰色的边框 ...
- ios中block中的探究
http://blog.csdn.net/jasonblog/article/details/7756763
- hdu 4627 The Unsolvable Problem(暴力的搜索)
Problem Description There are many unsolvable problem in the world.It could be about one or about ze ...
- android 边学边记 2015.10.16
1.Menu.FIRST在reference中描述为:First value for group and item identifier integers.我们可以理解为ID设置的最小数值. 2.se ...
- Tcl 简单介绍及特性
[简单介绍|特性] l 简单介绍 Tcl是一门产生于80年代末的语言,和Python一样,她是用c开发出来的.假设说C/Java/C++/C#为编译型语言的话,那么Python.Perl和Tcl就是 ...
- win7下安装Ubuntukylin-14.04双系统
工具准备: 下载ISO系统镜像,UltraISO,EasyBCD,分区助手,8G 优盘 U盘启动制作流程: 1,打开分区助手,从硬盘中分出空闲空间(60G)作为Ubuntu工作空间,文件系统设为Ext ...
- java集合类深入分析之Queue篇(Q,DQ)
简介 Queue是一种很常见的数据结构类型,在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约.实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现 ...
- ASP.Net【如何合并DataTable,并且去重复方法】
虽然DataTable.Merge可以很好的实现,但以下代码写出来更好理解 DataTable DataTable1 = new DataTable(); DataTable DataTable2 = ...
- JS实现用键盘控制DIV上下左右+放大缩小与变色
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...