2010-02-11 2 views
2

Взгляните на это:Странное поведение HtmlUnit (? Ошибка)

WebClient client = new WebClient(); 
WebRequestSettings wrs = new WebRequestSettings(new URL("http://stackoverflow.com/ping/?what-the-duck?"), HttpMethod.HEAD); 
client.getPage(wrs); 

Запуск это результат кода в метании FileNotFoundException, потому что код HTTP Status на странице 404 и получать ту же страницу снова с GET, с User-Agent установленным Java-.... Почему он получает страницу (это не происходит с «нормальными» кодами состояния)? Это ошибка? Благодаря

Вот весь ответ сервера:

HTTP/1.1 404 Not Found 
Cache-Control: private 
Content-Length: 7502 
Content-Type: text/html; charset=utf-8 
Server: Microsoft-IIS/7.5 
Date: Thu, 11 Feb 2010 14:12:11 GMT 

Где это говорит клиенту что-то получить? И как заставить WebClient игнорировать его?

Вот скриншот HTTPDebugger: alt text http://i49.tinypic.com/11lsf1y.png Проблема здесь я не понимаю, почему второй запрос отправляется и почему он послал с различными UserAgent.

ответ

0

Выполняется запрос HEAD - это возвращает ответ с нулевым содержимым. HtmlUnit все же пытается создать страницу. Для этого он создает источник ввода с url и содержимым (который является нулевым) и передает его парсеру. Когда парсер пытается проанализировать исходный источник, он видит нулевой контент и использует URL-адрес для извлечения содержимого заново. Таким образом, на самом деле это не HtmlUnit, который делает второй запрос, это парсер XML. И поэтому пользовательский агент - это Java, а не HttpClient.

Смежные вопросы