我试过了 this Java Tip,但没有成功。不成功,我的意思是我读回的回复是完全相同的页面。
这是初始页面的部分屏幕截图 -
如您所见,我正在尝试填写用户名 和密码/密码 字段。这将允许我访问其他感兴趣的页面。如果有帮助,这里是 form 标签的片段 -
<form method="post" action="platform.cgi">
根据 action 属性,我推测在 post 上,它会执行 platform.cgi 脚本。它是否正确?此外,对于 Login 按钮,它会调用 javascript 方法(即 loginValidate()
)-
<input type="submit" value="Login" name="umi.loginAuth" class="b0" title="Login" onclick="return loginValidate ()">
此外,如果这也有帮助的话,这里是两个文本字段的片段 -
<input type="text" name="web0x120010" id="txtUserName" size="26" class="txtbox" maxlength="31">
<input type="password" name="web0x120011" id="txtPwd" size="26" class="txtbox" maxlength="64">
当我按照示例填写内容时,我使用了txtUserName
和txtPwd
,但这不起作用。有什么想法或其他资源可以帮助我吗?
如果这还不够清楚,请告诉我 - 谢谢!
最佳答案
如果您的问题是发布一些数据并进入站点,那么我建议您使用 common-http-client 库,它本质上是为此类问题创建的。 向网站调用 post 方法的典型方法如下(来自 Here )
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://vogellac2dm.appspot.com/register");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("registrationid",
"123456789"));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
这对您来说变得非常方便,您不必像 HttClient 那样管理 session 。这对于登录后访问后续页面很重要,前提是您使用相同的 HttpClient 实例。
关于java - 如何将 HTTP 发布到 CGI 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471400/