2011-09-19 99 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實例,這對登錄後訪問後續頁面非常重要。