Apache HTTPClient возвращает пустую страницу - PullRequest
0 голосов
/ 30 мая 2010

Я использую Apache HTTPClient для Java и столкнулся с действительно странной проблемой. Иногда, когда я пытаюсь получить динамически генерируемую страницу, она возвращает фактическое содержимое, но в других случаях (с другим параметром) все, что я получаю, это короткая последовательность \ t, \ r и \ n.

Как я могу отследить, что происходит в разных случаях, чтобы найти, где находится ошибка?

Я использую библиотеку довольно просто, все, что я делаю, это несколько вызовов инициализированного объекта HTTPClient:

String content = "/pageIwant.jsp?parameter=10101010";
HttpGet request = new HttpGet(content);
HttpResponse response = client.execute(targetHost, request);
HttpEntity entity = response.getEntity();
String page = EntityUtils.toString(entity);

Ответы [ 2 ]

3 голосов
/ 30 мая 2010

То, как я хотел бы начать, пытаясь получить ту же страницу с помощью веб-браузера.Если вы не можете заставить это работать, вероятно, можно с уверенностью заключить, что настоящая проблема с сервером.Вам нужно будет поговорить со службой поддержки сервера.

Если браузер работает, попробуйте повторить процесс, используя утилиту wget.Если wget вызывает у вас проблемы, вернитесь в браузер и выясните, какие именно заголовки браузер отправляет в HTTP-запросе, и попытайтесь заставить wget использовать те же заголовки.Как только вы получили wget для работы, запишите заголовки.

Наконец вернитесь к своему Java-коду и измените его так, чтобы отправляемые им заголовки HTTP-запроса были такими же, как те, которые работают дляwget.

Да, я должен пройти аутентификацию, используя прокси-сервер своего университета, и тогда я смогу получить доступ ко всем данным.Проверка подлинности прокси работает безупречно для «страницы журнала» и даже для других сайтов, поэтому я исключу, что проблема связана с этим.

Я думаю, вы можете исключили реальную проблему.@BalasC не говорит об аутентификации прокси.Скорее он говорит об аутентификации на сайте IEEE.И то, что одна часть сайта работает без аутентификации, еще не значит, что все будет.(Однако я бы подумал, что сайт будет отвечать ошибкой «ЗАПРЕЩЕНО» или «ТРЕБУЕТСЯ АВТОРИЗАЦИЯ», а не доставлять странный контент.)

Другая возможность состоит в том, что сайт пытается предотвратить «скриншот экрана»их содержания с использованием автоматических инструментов.Проверьте «Условия предоставления услуг» для сайта, чтобы увидеть, разрешено ли то, что вы пытаетесь сделать.(Вы можете игнорировать ПС и обойти технические меры, но тогда вы можете обнаружить, что IP-адрес вашей организации или вашей организации заблокирован, или вы можете быть в конце писем о прекращении и отказе от участия в разговоре о нарушении авторских прав.)

0 голосов
/ 01 июня 2010

Я нашел решение своей проблемы, мне не хватало некоторых данных заголовка, которые, очевидно, требуются только от части динамической страницы.

Чтобы решить мою проблему, я сначала использовал wireshark, чтобы увидеть связь между браузером и сервером, а затем добавил все отсутствующие заголовки.

Я обнаружил, что в моем случае мне нужно было указать данные «Accept-Language»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...