首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java和jaunt-api登录网页时遇到的问题

使用java和jaunt-api登录网页时遇到的问题
EN

Stack Overflow用户
提问于 2015-06-18 17:43:34
回答 1查看 1.5K关注 0票数 0

所以我试着用Jaunt登录到一个网页。首先要提到的是,网页是.aspx,提交按钮有一个选项onclick="javascript:WebForm_DoP...",据我所知,Jaunt不支持Javascript,对吗?如果我错了,我正在使用的代码是Jaunt示例中的代码:

代码语言:javascript
复制
Form form = userAgent.doc.getForm(0);
form.setTextField("Login1$UserName","USER");
form.setPassword("Login1$Password","PASSWORD");
form.setCheckBox("Login1$RememberMe",false);
form.submit("GO");
System.out.println(userAgent.getLocation());

所有的名称和值都是正确的,用户和密码工作,因为我可以登录使用网络浏览器。在执行代码之后,在输出中我得到以下内容:

消息: UserAgent.sendPOST;连接错误requestUrl:http://webpagehere.com/default.aspx发布requestUrl响应:无

表格div是这样一个:

代码语言:javascript
复制
<form name="form1" method="post" action="Default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="form1" style="text-align:center">

我有什么问题吗?如果case不允许我做这个登录,有人能推荐给我一个图书馆进行网络抓取和交互吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-07-01 06:45:03

看来你被困住了。实际上,.aspx页面使用AJAX分页。您必须提取__VIEWSTATE、__VIEWSTATEGENERATOR和所有其他表单值的值,然后在请求正文中使用POST方法发送它们。您可以使用费德勒获取包含所有这些隐藏变量和表单条目的请求体。

在Java中,您可以使用Selenium或HTMLUnit (它们是Java无浏览器,支持JavaScript )再次运行网页。

编辑:你也可以使用Jaunt,我刚刚试用了它,你所做的只是发送一个随请求一起发送的请求-body,你可以很容易地用Fiddler检查它,而且它工作!!

HTTP POST中的表单值以与查询字符串相同的格式在请求正文中发送。您可以通过使用Fiddler检查链接的请求正文,然后从Textview复制请求正文并将编码的数据作为请求正文发送。

代码语言:javascript
复制
UserAgent userAgent = new UserAgent();
userAgent.sendPOST("<your link to form page>","<request body>");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30922192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档