[英]How to HTTP post to a CGI script
我尝试了此 Java技巧,但未成功。 不成功,是指我读回的回复是完全相同的页面。
这是初始页面的部分屏幕截图-
如您所见,我正在尝试填写用户名和密码/密码字段。 这将允许我访问其他感兴趣的页面。 如果有帮助,请使用以下表单标签片段:
<form method="post" action="platform.cgi">
从action属性,我推测在post上 ,它将执行platform.cgi脚本。 这个对吗? 此外,至于登录按钮,它会调用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那样为您管理会话。 如果您使用相同的HttpClient实例,这对于登录后访问后续页面很重要。
发布名称( web0x120010
和web0x120011
),而不是输入框的ID,并发布umi.loginAuth=Login
键值对。 如果没有帮助,请安装HttpFox Firefox扩展并记录正常的登录请求,并检查日志中的post参数。
根据http://stupidunixtricks.blogspot.com/2010_10_01_archive.html ,您也应该注意cookie。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.