параметр подключения jsoup - PullRequest
       21

параметр подключения jsoup

0 голосов
/ 12 января 2012

Я получаю доступ к веб-странице, передавая идентификатор сеанса и URL-адрес, а в результате получаем ответ HTML.Я хочу использовать jSoup для анализа этого ответа и получения элементов тега.Я вижу примеры в Jsoup принимает строку для установления соединения.Как продолжить.

псевдокод:

Я попробовал описанный выше метод и получил это исключение

java.io.IOException: 401 error loading URL http://www.abc.com/index
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:387)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132)

В основном entity.getContent() имеет ответ HTML, который долженпередаваться в виде строки в метод подключения.Но это не работает.

Ответы [ 2 ]

1 голос
/ 12 января 2012

Apache Commons HttpClient и Jsoup не имеют общего хранилища файлов cookie. По сути, вам нужно передавать те же самые куки, которые HttpClient извлекал обратно через Jsoup Connection. Вы можете найти некоторые конкретные примеры здесь:

В качестве альтернативы, вы также можете просто продолжать использовать HttpClient для запуска HTTP-запросов и поддержки файлов cookie и вместо этого подавать свои HttpResponse как String через Jsoup#parse().

Так что это должно сделать:

HttpResponse httpResponse = httpclient1.execute(httpget, httpContext);
String html = EntityUtils.toString(httpResponse.getEntity());
Document doc = Jsoup.parse(html, testUrl);
// ...

Кстати, вам не обязательно создавать совершенно новый HttpClient для последующего запроса. Просто используйте httpclient, который вы уже создали. Также ваш способ получения ответа как String неуклюж. Вторая строка в приведенном выше примере показывает, как это сделать проще всего.

0 голосов
/ 12 января 2012

Показывает ошибку http 401, что означает

Similar to 403 Forbidden, but specifically for use when authentication is possible but has failed or not yet been provided.

Поэтому я думаю, что вам нужно войти на сайт, используя свой код Java, или идентифицировать себя, отправив файлы cookie через ваш код.

...