2011-09-19 96 views
1

我试过​​Java提示,但不成功。如果不成功,我的意思是我读回的回复是相同的页面。如何将HTTP发布到CGI脚本

这里的初始页面的局部截图 -

enter image description here

正如你所看到的,我想填写用户名口令/密码领域。这将允许我访问其他感兴趣的页面。如果有帮助,这里的形式标签的片段 -

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

行动属性,我推测,在,它会执行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

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

根据http://stupidunixtricks.blogspot.com/2010_10_01_archive.html,你也应该注意cookies。

+0

你是一个拯救生命的人! :D – mrkhrts

+1

Thanks :)请注意,@ Santosh建议使用Apache的HttpClient是一个更好,更干净的解决方案,因为您不必关心cookie。 – palacsint

4

如果您的问题是发布一些数据并进入网站,那么我会建议您使用common-http-client库,它基本上是为这些类型的问题创建的。 调用方法后到网站的典型方式是(从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实例,这对登录后访问后续页面非常重要。