jsoup发布和cookie

我试图用jsouplogin到一个网站,然后刮信息,我遇到了一个问题,我可以login成功,并从index.php创build一个文档,但我不能在网站上的其他网页。 我知道我需要设置一个cookie后,我发布,然后加载它,当我试图在网站上打开另一个页面。 但是,我该怎么做呢? 以下代码让我login并获取index.php

Document doc = Jsoup.connect("http://www.example.com/login.php") .data("username", "myUsername", "password", "myPassword") .post(); 

我知道我可以使用Apache httpclient来做到这一点,但我不想。

当您login到网站时,可能会设置一个授权的会话cookie,需要在随后的请求上发送以维护会话。

你可以像这样获取cookie:

 Connection.Response res = Jsoup.connect("http://www.example.com/login.php") .data("username", "myUsername", "password", "myPassword") .method(Method.POST) .execute(); Document doc = res.parse(); String sessionId = res.cookie("SESSIONID"); // you will need to check what the right cookie name is 

然后发送下一个请求,如:

 Document doc2 = Jsoup.connect("http://www.example.com/otherPage") .cookie("SESSIONID", sessionId) .get(); 
 //This will get you the response. Response res = Jsoup .connect("loginPageUrl") .data("loginField", "login@login.com", "passField", "pass1234") .method(Method.POST) .execute(); //This will get you cookies Map<String, String> loginCookies = res.cookies(); //And this is the easiest way I've found to remain in session Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess") .cookies(loginCookies) .get(); 

代码是:

 Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess").cookies().get(); 

我有困难,直到我改变它:

 Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess").cookies(cookies).get(); 

现在它工作完美无瑕。