J'essaie d'utiliser jsoup pour me connecter à un site, puis pour récupérer des informations. Je rencontre un problème. Je peux me connecter avec succès et créer un document à partir de index.php, mais je ne peux pas obtenir d'autres pages sur le site. Je sais que je dois créer un cookie après la publication de mon message, puis le charger lorsque j'essaie d'ouvrir une autre page du site. Mais comment je fais ça? Le code suivant me permet de me connecter et d’obtenir index.php
Document doc = Jsoup.connect("http://www.example.com/login.php")
.data("username", "myUsername",
"password", "myPassword")
.post();
Je sais que je peux utiliser Apache httpclient pour le faire, mais je ne veux pas.
Lorsque vous vous connectez au site, vous définissez probablement un cookie de session autorisé qui doit être envoyé lors de demandes ultérieures pour maintenir la session.
Vous pouvez obtenir le cookie comme ceci:
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
Et ensuite envoyez-le à la prochaine requête comme:
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", "[email protected]", "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();
Où était le code:
Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess").cookies().get();
J'avais des difficultés jusqu'à ce que je le change en:
Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess").cookies(cookies).get();
Maintenant, cela fonctionne parfaitement.
Voici ce que vous pouvez essayer ...
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();
}
Enregistrez maintenant tous vos cookies et faites une demande à l’autre page de votre choix.
//Store Cookies
cookies = res.cookies();
Faire une demande à une autre page.
try {
Document doc = Jsoup.connect("your-second-page-link").cookies(cookies).get();
}
catch(Exception e){
e.printStackTrace();
}
Demandez si une aide supplémentaire est nécessaire.