Apache HttpClient模拟登录(转)

  • 来源:本站
  • 发布时间:2019-08-13
  • 117已阅读
您现在的位置:首页 >> 现代文学 >> 文章
简介 根据RFC2616中对自动转向的定义,主要有两种:301和302。 301表示永久的移走(MovedPermanently),当返回的是301,则表示请求的资源已经被移到一个固定的新地方

	Apache HttpClient模拟登录(转)

根据RFC2616中对自动转向的定义,主要有两种:301和302。

301表示永久的移走(MovedPermanently),当返回的是301,则表示请求的资源已经被移到一个固定的新地方,任何向该地址发起请求都会被转到新的地址上。 302表示暂时的转向,比如在服务器端的servlet程序调用了sendRedirect方法,则在客户端就会得到一个302的代码,这时服务器返回的头信息中location的值就是sendRedirect转向的目标地址。 HttpClient支持自动转向处理,但是象POST和PUT方式这种要求接受后继服务的请求方式,暂时不支持自动转向,因此如果碰到POST方式提交后返回的是301或者302的话需要自己处理。

就像刚才在POSTMethod中举的例子:如果想进入登录BBS后的页面,必须重新发起登录的请求,请求的地址可以在头字段location中得到。

不过需要注意的是,有时候location返回的可能是相对路径,因此需要对location返回的值做一些处理才可以发起向新地址的请求。

另外除了在头中包含的信息可能使页面发生重定向外,在页面中也有可能会发生页面的重定向。

引起页面自动转发的标签是:metahttp-equiv=refreshcontent=5;url=http:///us。

如果你想在程序中也处理这种情况的话得自己分析页面来实现转向。

需要注意的是,在上面那个标签中url的值也可以是一个相对地址,如果是这样的话,需要对它做一些处理后才可以转发。 HttpClient提供了对SSL的支持,在使用SSL之前必须安装JSSE。

在Sun提供的以后的版本中,JSSE已经集成到JDK中,如果你使用的是以前的版本则必须安装JSSE。

JSSE不同的厂家有不同的实现。

下面介绍怎么使用HttpClient来打开Https连接。 这里有两种方法可以打开https连接,第一种就是得到服务器颁发的证书,然后导入到本地的keystore中;另外一种办法就是通过扩展HttpClient的类来实现自动接受证书。

方法1,取得证书,并导入本地的keystore:。