2017-03-15 1 views
0

J'essaie actuellement d'accéder à un site Web après une connexion réussie, mais je reçois une erreur. J'ai découvert que je reçois pas les cookies des Connection.ResponseObtenir l'identifiant de la session cookie qui est créé après la connexion au site Web avec jsoup

Connection.Response loginForm = Jsoup.connect(LOGIN_URL) 
        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0") 
        .method(Connection.Method.GET) 
        .timeout(3000) 
        .execute(); 

      System.out.println(loginForm.cookies()); 

      Document login = Jsoup.connect(LOGIN_URL) 
        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0") 
        .data("email", email) 
        .data("password", password) 
        .cookies(loginForm.cookies()) 
        .timeout(3000) 
        .post(); 

Les documents de connexion renvoie le site correct si la connexion a réussi. J'ai analysé le processus avec les outils de développement Google Chrome (Google Chrome network screenshot). C'est là que j'ai découvert que le LOGIN_URL est le même pour le Connection.Response et le Document. Je suis également sûr que le formulaire ne veut que l'email et le mot de passe et aucune autre entrée cachée (ne peut pas vous donner le lien si). Je pourrais également découvrir qu'il y a un cookie (identification de session) qui est créé après la connexion.

System.out.println(loginForm.cookies()); ne renvoie rien ({}) donc je ne peux pas utiliser loginForm.cookies() pour une utilisation ultérieure. Ce serait optimal s'il y avait un moyen d'obtenir le cookie du POST.

Existe-t-il un moyen d'obtenir le cookie d'identifiant de session ou un autre moyen de résoudre mon problème?

Merci

Répondre

0

Enfin je l'ai trouvé la solution:

Vous pouvez tout faire en une seule étape en utilisant le Connection.Method.POST. Donc, la réponse est la réponse du POST

Connection.Response loginForm = Jsoup.connect(LOGIN_URL) 
       .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0") 
       .method(Connection.Method.POST) 
       .timeout(3000) 
       .data("email", email) 
       .data("password", password) 
       .execute(); 

     System.out.println(loginForm.cookies());