Сообщение jsoup и cookie

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

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

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

Ответ 1

Когда вы входите на сайт, возможно, это настроенный авторизованный сеансовый файл 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();

Ответ 2

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

Ответ 3

Где код:

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

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

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

Теперь он работает безупречно.

Ответ 4

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

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

Теперь сохраните все ваши файлы cookie и сделайте запрос на другую страницу, которую вы хотите.

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

Выполнение запроса на другую страницу.

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

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