jsoup publicación y cookie

Intento usar jsoup para iniciar sesión en un sitio y luego raspar información, me encuentro con un problema, puedo iniciar sesión correctamente y crear un documento desde index.php pero no puedo obtener otras páginas en el sitio. Sé que debo configurar una cookie después de publicar y luego cargarla cuando bash abrir otra página en el sitio. ¿Pero cómo hago esto? El siguiente código me permite iniciar sesión y obtener index.php

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

Sé que puedo usar apache httpclient para hacer esto, pero no quiero.

Cuando inicia sesión en el sitio, es probable que establezca una cookie de sesión autorizada que debe enviarse en solicitudes posteriores para mantener la sesión.

Puedes obtener la cookie así:

 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 

Y luego enviarlo en la siguiente solicitud como:

 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 loginCookies = res.cookies(); //And this is the easiest way I've found to remain in session Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess") .cookies(loginCookies) .get(); 

Donde el código fue:

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

Estaba teniendo dificultades hasta que lo cambié a:

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

Ahora está funcionando sin problemas.

Esto es lo que puedes probar …

 import org.jsoup.Connection; Connection.Response res = null; try { res = Jsoup .connect("http://www.example.com/login.php") .data("username", "your login id", "password", "your password") .method(Connection.Method.POST) .execute(); } catch (IOException e) { e.printStackTrace(); } 

Ahora guarde todas sus cookies y solicite a la otra página que desee.

 //Store Cookies cookies = res.cookies(); 

Haciendo solicitud a otra página.

 try { Document doc = Jsoup.connect("your-second-page-link").cookies(cookies).get(); } catch(Exception e){ e.printStackTrace(); } 

Pregunte si necesita ayuda adicional.