[英]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.