Вызовите getPage из htmlunit WebClient с отключенным JavaScript и setTimeout, установленным в 10000, ждет вечно

У меня проблемы с Htmlunit, я отключил JavaScript и установил тайм-аут на 10000 перед вызовом getpage, я ожидал исключение после тайм-аута, но htmlunit ждет вечно.

После некоторого поиска я понял, что у кого-то в 2009 году возникла такая же проблема ( тайм-аут соединения не работает), он жаловался на "Тайм-аут соединения не работает" и на некоторые значения тайм-аута не работает, но до сих пор в 2011 году не получил никакого ответа.

Кто-то здесь спрашивал о том, какое исключение выдается, но я думаю, что это не всегда. Я также не могу получить ответ от Apache HttpClient setTimeout. Вы можете увидеть другого человека, спрашивающего об остановке по таймауту в терминации или Stop HtmlUnit.

Вы можете увидеть, как это безумие, если вы попробуете:

milisecReqTimeout = 10;
while(true)
{
    _webclient.setTimeout(milisecReqTimeout);
    milisecReqTimeout = milisecReqTimeout + 10;
    _htmlpage = _webclient.getPage(url);
}

2 ответа

     _thewebclient.setWebConnection(new HttpWebConnection(_thewebclient) {
     @Override
     protected synchronized AbstractHttpClient getHttpClient() {
         AbstractHttpClient client = super.getHttpClient();
         if (_TimeoutCliSocket > 0) {
             //Sets the socket timeout (SO_TIMEOUT) in milliseconds to
             //be used when executing the method.
             //A timeout value of zero is interpreted as an infinite timeout.
             //Time that a read operation will block for, before generating 
             //an java.io.InterruptedIOException
             client.getParams().setParameter("http.socket.timeout", 
                                                      _TimeoutCliSocket);
         }
         if (_TimeoutCliConnection > 0) {
             //The timeout in milliseconds used when retrieving an
             // HTTP connection from the HTTP connection manager.
             // Zero means to wait indefinitely.
             client.getParams().setParameter("http.connection-manager.timeout", 
                                                     _TimeoutCliConnection);
         }
         client.getParams().setParameter("http.tcp.nodelay", true);
         return client;
     }
 });

до свидания

Я нашел, с помощью HttpUnit 1.6.2, установив эти

    final HttpClient client = new HttpClient();
    final GetMethod method = new GetMethod(pUrl);

    client.setConnectionTimeout((int) timeout);
    client.setTimeout((int) timeout);

    final int statusCode = client.executeMethod(method);

Казалось, сделать трюк. Оба являются устаревшими методами.:(

Другие вопросы по тегам