2013-01-17 114 views
1

我一直在嘗試登錄使用Jsoup從同一站點的其他鏈接獲取信息的網站。當我連接它時,不會返回會話中的所有Cookie。我不確定是否應該使用__utma,__utmb等來保存記錄,但這是我認爲阻止我登錄的唯一因素。JSoup不返回所有的cookies

這是代碼。

public static void main(String[] args) throws Exception { 
    String url = "https://www.evoicetelecom.com.br/customers/myAccount"; 

    final Connection.Response res = Jsoup.connect("http://www.evoicetelecom.com.br/login/") 
       .data("userName", "user") 
       .data("password", "pass") 
       .method(Connection.Method.POST) 
       .execute(); 


    Document doc = res.parse(); 
    Map<String, String> cookies = res.cookies(); 


Document doc2 = Jsoup.connect(url).cookies(cookies).get(); 

Elements element = doc2.select("body"); 

System.out.println(element); 

    } 

打印它只是爲了檢查它是否正確。

回答

1

我有一個類似的問題,但在我的情況下,cookie的值爲空(「」),我發現原因是cookie值在響應頭解析器中重置。由於Jsoup是開源的,因此它很容易調試響應處理。試試看,你可能會找到你的問題的答案。在我的情況下,我只是將這個小if語句添加到HttpConnection.Base類中的cookie方法中:

 if(value.length() == 0 && cookies.containsKey(name)){ 
      return (T) this; 
     }