如何HTTP发布到CGI脚本

时间:2011-09-19 13:04:03

标签: java cgi http-post

我尝试了this Java提示,但没有成功。如果不成功,我的意思是我回读的回复是完全相同的页面。

这是初始页面的部分截图 -

enter image description here

如您所见,我正在尝试填写用户名密码/密码字段。这将允许我访问其他感兴趣的页面。如果它有帮助,这里是 form 标签的片段 -

<form method="post" action="platform.cgi">

action 属性中,我推测在帖子上,它会执行 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">

当我在示例中填写内容时,我使用了txtUserNametxtPwd,但这不起作用。任何可能对我有帮助的想法或其他资源?

如果这还不够清楚,请告诉我 - 谢谢!

2 个答案:

答案 0 :(得分:4)

如果您的问题是发布一些数据并进入网站,那么我建议您使用基本上为这些类型的问题创建的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实例,这对于在登录后访问后续页面很重要。

答案 1 :(得分:2)

使用名称(web0x120010web0x120011)发布,而不是输入框的ID,并发布umi.loginAuth=Login键值对。如果它没有用,请安装HttpFox Firefox扩展并记录正常的登录请求并检查日志中的post参数。

根据http://stupidunixtricks.blogspot.com/2010_10_01_archive.html,您也应该关注cookie。