Jsoup размещения и cookie - PullRequest
       40

Jsoup размещения и cookie

47 голосов
/ 22 июня 2011

Я пытаюсь использовать jsoup для входа на сайт, а затем собирать информацию, я столкнулся с проблемой, могу успешно войти в систему и создать документ из index.php, но не могу получить другие страницы на сайте. Я знаю, что мне нужно установить файл cookie после публикации, а затем загрузить его, когда я пытаюсь открыть другую страницу на сайте. Но как мне это сделать? Следующий код позволяет мне войти и получить index.php

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

Я знаю, что могу использовать apache httpclient для этого, но я не хочу.

Ответы [ 4 ]

98 голосов
/ 25 июня 2011

Когда вы входите на сайт, он, вероятно, устанавливает авторизованный файл 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();
18 голосов
/ 10 мая 2012
//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();
1 голос
/ 29 декабря 2012

Где был код:

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

У меня были трудности, пока я не изменил его на:

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

Теперь он работает без нареканий.

0 голосов
/ 05 декабря 2017

Вот что вы можете попробовать ...

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();
    }

Теперь сохраните все свои куки и отправьте запрос на другую страницу, которую хотите.

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

Оформление запроса на другую страницу.

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

Спросите, нужна ли дополнительная помощь.

...