各位大神如何用HttpClient 提交表单登录到别人的网站?

TuskueNeko 2015-08-10 11:45:35
是这样的: 我有该网站的账号密码 现在我想在自己服务器上做个程序 在Servlet中用HttpClient 提交表单 登录到 别人网站 然后我自己的服务器 就直接返回 该网站登录后的界面
如下代码:
httpResponse = Request.Post("https://xxxxxx/login.do")
.add("RedirectTo", "/axanet/axacr_ai.nsf").build())
.execute().returnResponse();
String url = httpResponse.getHeaders("location")[0].getValue();


上面代码已经成功登录到该网站 并且拿到了 登录成功后要跳转的url 但是 我如果直接response.sendRedirect(url);
会跳转到登录页面, 我猜测应该是没session?? 因为程序提交表单时session是在httpclient中 浏览器中是没有的?

所以我这样做了
for (Header header : httpResponse.getHeaders("Set-Cookie")) {
if(header.getValue().toUpperCase().indexOf("JSESSIONID")!=-1){

response.setHeader(header.getName(), header.getValue());
System.out.println("sessionId="+header.getValue());
}

}


也许 错的很离谱。。。 求大神指点啊
...全文
232 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
TuskueNeko 2015-08-14
引用 9 楼 lxduu87 的回复:
1、浏览器跳转到自己服务器,然后服务器httpclient登录 2、自己服务器返回登录后成功页面,浏览器打开页面。 即跳过了浏览器登录,代由httpclient登录,为什么要这样做, ("Cookie", "JSESSIONID=C1A34A2EC4C9423BB460E6F7005CA81E"); 把sessionId保存到浏览器cookie中试试
是加进 response的头文件中是吗? 然而行不通。。。 我试过将代码获得的sessionID 放进 请求的response 头中 然后用response重定向登录成功后的页面 但是 依旧被弹出登录页面。
回复
lxduu87 2015-08-12
1、浏览器跳转到自己服务器,然后服务器httpclient登录 2、自己服务器返回登录后成功页面,浏览器打开页面。 即跳过了浏览器登录,代由httpclient登录,为什么要这样做, ("Cookie", "JSESSIONID=C1A34A2EC4C9423BB460E6F7005CA81E"); 把sessionId保存到浏览器cookie中试试
回复
兔子托尼啊 2015-08-10
先抓包分析需要的请求参数, 代码模拟
回复
TuskueNeko 2015-08-10
引用 6 楼 shijing266 的回复:
[quote=引用 3 楼 u012280292 的回复:] 我知道request里有session但是session是不能改变的啊。。
如果不一样,可不可以手动去从httpclient的session里面取值,然后放入浏览器session呢[/quote] 我查过了 网上说网一般验证是根据SEESION ID 来判断 于是 我这样
for (Header header : httpResponse.getAllHeaders()) {
				response.addHeader(header.getName(), header.getValue());
}
我把请求中所有cookie都加进response里了 但是没有啊。。。 HttpClient不能拿session只能拿到session ID
回复
引用 3 楼 u012280292 的回复:
我知道request里有session但是session是不能改变的啊。。
如果不一样,可不可以手动去从httpclient的session里面取值,然后放入浏览器session呢
回复
TuskueNeko 2015-08-10
引用 4 楼 sunshiwu1984 的回复:
用抓包工具httpwatch看看你的请求和IE请求的差别。
httpclient 提交表单后的session是存IE里面的吗?
回复
sunshiwu1984 2015-08-10
用抓包工具httpwatch看看你的请求和IE请求的差别。
回复
TuskueNeko 2015-08-10
引用 2 楼 shijing266 的回复:
你的session中需要保存哪些值? request中自带了session 啊
我是要把httpclient 里请求的session换成 我本地服务器中的session啊 我知道request里有session但是session是不能改变的啊。。
回复
你的session中需要保存哪些值? request中自带了session 啊
回复
TuskueNeko 2015-08-10
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-08-10 11:45
社区公告
暂无公告