2017-08-01 122 views
0

在嘗試了不同的教程並閱讀大量帖子後,我仍然無法使用jsoup登錄到網站。使用java jsoup登錄不起作用

這是我的代碼

 Connection.Response response = Jsoup.connect("https://www.ivolatility.com/login.j") 
       .method(Connection.Method.GET) 
       .execute(); 

     response = Jsoup.connect("https://www.ivolatility.com/login.j") 
       .data("username", username) 
       .data("password", password) 
       .cookies(response.cookies()) 
       .method(Connection.Method.POST) 
       .execute(); 

     Document homePage = Jsoup.connect("http://www.ivolatility.com/options.j") 
       .cookies(response.cookies()) 
       .get(); 
+0

不應該在上次請求中使用「https」嗎?你使用了'http:// www.ivolatility.com/options.j',我首先在這裏查看'https' URL。 –

+0

我做到了。同樣的結果。似乎這個網站是這樣工作的。要登錄,他們使用https,登錄後它會消失。 – clex

回答

1

檢查post要求,即瀏覽器發送(使用瀏覽器的開發者工具) - 它向你不要送一些額外的參數。將它們添加到您的reauest:

response = Jsoup.connect("https://www.ivolatility.com/login.j") 
      .data("username", username)     
      .data("ref_url", "") 
      .data("service_name", "") 
      .data("step", "1") 
      .data("login__is__sent", "1") 
      .data("password", password) 
      .cookies(response.cookies()) 
      .method(Connection.Method.POST) 
      .execute(); 

這也將是明智的添加user agent串瀏覽器請求的,因爲你的程序可能會派自己的字符串,導致來自瀏覽器的總不同的反應。

+0

這是解決方案。謝謝。 – clex

+0

很高興爲您提供幫助。如果我的答案解決了您的問題,您可以將其標記爲已接受。 – TDG