我需要登录一个网站,点击一些链接到最后的画面下载一些数据,这里是步骤:HttpClient的不填妥的HTML源代码
- 第一步:登录到第一页上的网站;
- 第二步:点击第一页上的'查看'链接进入第二页;
- 步骤3:在第二页上输入'账号',点击提交按钮即可获取显示的多行数据,我称之为第三页) (我通过粘贴获得第三页的直接粘贴,这个URL到浏览器的地址栏中,第三页显示正确)
这是我的问题: 我使用的是Httpclient。它通过登录页面,可以到达第三页,但只有 返回页面上的静态部分,不会返回基于输入“账号”动态生成数据的部分。
下面是代码:
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(loginUrl);
PostMethod postMethod = new PostMethod(serverUrl);
// Prepare login parameters
NameValuePair[] data = {
new NameValuePair("passUID",account),
new NameValuePair("passUCD",password)
};
postMethod.setRequestBody(data);
// I can print out the html code of the login page here
//request the third page with URL: serverUrl4
postMethod = new PostMethod(serverUrl4);
NameValuePair[] data2 = {
new NameValuePair("passUID",account),
new NameValuePair("passUCD",""),
new NameValuePair("page", "view"),
new NameValuePair("procacct", "0"),
new NameValuePair("AcctNo", "xxxxxxxxx")
};
postMethod.setRequestBody(data2);
client.executeMethod(postMethod);
byte[] responseBody = postMethod.getResponseBody();
如果我贴在网址到浏览器上面namevaluepairs中的URL,显示正确的帐户数据。但响应者不会返回动态生成的帐户数据,其他任何内容都会返回,但“帐户数据”部分。
有人知道为什么吗?任何帮助,高度赞赏。
感谢安德鲁!它是javascript生成的数据。你能提出建议来解决这个问题吗? – swei 2010-12-13 21:34:02
不知道更多关于目标页面。如果它只是对Web服务进行ajax调用,那么你可能会模拟它,但如果它正在进行计算,那么你可能会运气不好。 – 2010-12-13 22:14:16