2017-08-04 117 views
5

Asp.net形式我試圖登錄到http://www.investabroadproperties.com/網站使用下面的代碼登錄POST方法使用Jsoup

Connection.Response loginForm = Jsoup.connect("http://www.investabroadproperties.com/") 
       .method(Connection.Method.GET) 
       .execute(); 

     Document document = Jsoup.connect("http://www.investabroadproperties.com/") 
       .data("ctl00$ctl02$tbEmail", "myemail") 
       .data("ctl00$ctl02$tbPassword", "mypassword") 
       .cookies(loginForm.cookies()) 
       .post(); 

但我無法登錄到這個網站。通過查看該網站的html源代碼,我發現有一些hidden字段如下所示,但具有空值。還有一個屬性onsubmit="javascript:return WebForm_OnSubmit();",我不知道如何使用它。

enter image description here

我也看到this post,但我不明白,在接受的答案給出的邏輯/代碼(可能是一個幫助)。

任何人都可以幫助我,我如何登錄到網站?

我正在使用java和jsoup。

編輯

我也嘗試下面的代碼,但仍然沒有運氣

Connection.Response loginForm = Jsoup.connect("http://www.investabroadproperties.com/") 
       .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1") 
       .method(Connection.Method.GET) 
       .execute(); 

     Document doc = loginForm.parse(); 

     Elements hiddenElems = doc.select("input[type=hidden]"); 
     Map<String, String> nameValue = new HashMap<>(); 

     for(Element elem : hiddenElems) { 
      nameValue.put(elem.attr("name"), elem.attr("value")); 
     } 

     Document document = Jsoup.connect("http://www.investabroadproperties.com/") 
       .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1") 
       .data("ctl00$ctl02$tbEmail", "myValidEmail") 
       .data("ctl00$ctl02$tbPassword", "myValidPassword") 
       .data(nameValue) 
       .cookies(loginForm.cookies()) 
       .post(); 
+0

爲什麼java標籤在這裏? – sForSujit

+0

1.即使該欄位爲空/隱藏,也必須提交。 2.檢查瀏覽器的發佈請求 - 它包含一些額外的字段(包含值),如__viewstate。 3.將您的用戶代理字符串添加到您的請求中。 4.有幾個類似的問題,像這樣 - https://stackoverflow.com/questions/31871801/problems-submitting-a-login-form-with-jsoup/ – TDG

+0

@TDG請參閱最新的代碼。 – Junaid

回答

3

下面的圖片是從我的瀏覽器的開發者工具拍攝。正如你所看到的,你還是在您的要求缺少一些值:

post request

必須將所有這些值發送到服務器。