2013-11-24 163 views
7

我想用JSoup post方法登錄到網站。我看到了一些例子,但都沒有對我有用。 我試圖登錄到:http://ug.technion.ac.il/Tadpis.html 對於我有以下代碼:使用JSoup post方法登錄網站

String url = "http://ug.technion.ac.il/Tadpis.html"; 
doc = Jsoup.connect(url).data("userid", "my_user_id") 
       .data("password", "my_password").data("function","signon").data("submit", "Signon").post(); 

顯然我錯過了一些數據(我不知道是哪個)。另一個不夠清楚的地方就是url。當examinig上述網址的HTML我可以看到這一行:

<form action="http://techmvs.technion.ac.il:80/cics/wmn/wmngrad?aapmlkwi&ORD=1&s=1" method="POST" name="SignonForm" 

其是從上述的一個不同的URL。我假設哪一個用作URL參數來「連接」方法?

謝謝!

回答

5

您在地址欄中看到的網址不是您想要發送請求的網址。您應該向您在表單中看到的第二個網址發送請求。

//With this you login and a session is created 
    Connection.Response res = Jsoup.connect("http://techmvs.technion.ac.il:80/cics/wmn/wmngrad?aapmlkwi&ORD=1&s=1") 
     .data("username", "myUsername", "password", "myPassword") 
     .method(Method.POST) 
     .execute(); 

//This will get you cookies 
Map<String, String> loginCookies = res.cookies(); 

//Here you parse the page that you want. Put the url that you see when you have logged in 
Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess") 
     .cookies(loginCookies) 
     .get(); 

P.S.我相信http://techmvs.technion.ac.il:80/cics/wmn/wmngrad就足夠了。您不需要額外的GET參數,但請自行檢查。