当前位置:编程学习 > JAVA >>

httpclient 获取URL重定向新地址

我现在输入一个url以后被重定向了,浏览器上显示的是另外一个url。
我现在要获取这个新的url。网上说用httpclient可以实现。请各位大神指导一下!
PS:网上的代码都是要用户名/密码的,我就是单纯的获得新的URL地址就行!谢谢。 --------------------编程问答-------------------- 利用HttpServletRequest对象 的getServletPath()方法, 获取所请求的文件路径 --------------------编程问答-------------------- 请问有没有HttpServletRequest的例子? --------------------编程问答-------------------- 你是想模拟浏览器来访问服务器么?

如果不涉及复杂的表单提交或Session之类啥的动作,直接用 new URL("....").openConnection()
然后取回其 InputStream 都可以实现,你要的新的URL信息,在HTTP-HEAD(头信息)中就有。


HttpClient的好处是可以支持各种表单POST,Cookie等内容,更好的模拟浏览器环境。 --------------------编程问答-------------------- 现在知道这个重定向的过程了。:
他是当你输入打开一个网页(比如A)时,浏览器会跳转到一个需要你输入账号密码的页面B,当你输入点击确定后页面再回到A,这时候的URL就不是你当初打开A时的URL了。已经被重定向了。

我现在想用JAVA来完成这个过程,账号,密码放在JAVA程序中。请问需要什么技术可以实现这个内容? --------------------编程问答--------------------
引用 3 楼  的回复:
你是想模拟浏览器来访问服务器么?

如果不涉及复杂的表单提交或Session之类啥的动作,直接用 new URL("....").openConnection()
然后取回其 InputStream 都可以实现,你要的新的URL信息,在HTTP-HEAD(头信息)中就有。


HttpClient的好处是可以支持各种表单POST,Cookie等内容,更好的模拟浏览器环境。


收到您的回复了。我学习下HttpClient。 --------------------编程问答--------------------
引用 4 楼  的回复:
我现在想用JAVA来完成这个过程,账号,密码放在JAVA程序中。请问需要什么技术可以实现这个内容?


这个就确实需要用HttpClient了,但是注意全过程只能基于同一个HttpClient的实例,这样才能保证Cookie有效,那么登录的状态(对于服务器端就是session)才能保持下来。 --------------------编程问答-------------------- ..又遇到一个问题了。我现在已经连接到网站并且把我的用户名,密码传进去了,返回成功(StatusCode=200)可是返回的还是原来那个页面。。是不是我应该设置点击“提交”按钮,然后再client.executeMethod()?
网上说httpclient不支持点击按钮 - -。这该怎么弄?

<a node-type="submit" action-type="submit"   class="WB_btn_oauth formbtn_01"></a>
这个按钮的CSS代码是这个,如果点击的话他没有设置ID可以根据class来传值是吗? --------------------编程问答-------------------- 一般来说不需要,返回成功200,不代表真的成功,200是表示该请求处理过程是成功结束的,是纯技术层面的成功。

你要把页面弄出来看看是否有提示信息。

很多登录页面,密码错误后都是返回原始页面并提示一行小字:“密码错误” --------------------编程问答-------------------- 当返回状态为3XX  是通常 是转向  

如何 获得转向地址 判断返回的状态  
    if(resstatus==3xx){

     Header header   = postMethod.getResponseHeader(‘location’)
    if(null!=header){
  String newUrl   = header.getValue();//新URL 
 


}

}

--------------------编程问答-------------------- --------------------编程问答--------------------
	if (statusCode == 302) {
if (entity != null) {
try {
EntityUtils.consume(entity);
} catch (IOException e) {

}
}
if (getMethod != null) {
getMethod.abort();
}
Header[] headers = response.getHeaders("Location");
for (Header header : headers) {
success = downFile(header.getValue(), file);
break;
}
}
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,