Сообщение 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();
}
Спросите, нужна ли дополнительная помощь.