WebHarvest не может найти заголовки ответа

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

Это настроено так:

Страница 1 = Страница входа

Страница 2 = страница подтверждения входа

Страница 3 = Страница статистики

На странице 2 установлено печенье. Контролируя открытие страницы 2 с помощью Firebug, я получаю следующие заголовки:

Connection  Keep-Alive
Content-Type    text/html; charset=UTF-8
Date    Tue, 23 Oct 2012 18:25:12 GMT
Keep-Alive  timeout=15, max=100
Server  Apache/2.0.64 (Win32) JRun/4.0 SVN/1.3.2 DAV/2
Set-Cookie  SESSION=hej123;expires=Thu, 16-Oct-2042 18:25:12 GMT;path=/
Transfer-Encoding   chunked

При вызове той же страницы с WebHarvest я получаю только эти заголовки:

Date=Tue, 23 Oct 2012 18:31:51 GMT
Server=Apache/2.0.64 (Win32) JRun/4.0 SVN/1.3.2 DAV/2
Transfer-Encoding=chunked
Content-Type=text/html; charset=UTF-8

Кажется, что три заголовка (Set-Cookie, Connection и Keep-Alive) не найдены WebHarvest. Страницы 1, 2 и 3 - пустышки, поэтому никакой проверки не производится. Файл cookie всегда устанавливается на стороне сервера для страницы 2.

Вот код WebHarvest, который я сейчас использую:

<var-def name="content2">
<html-to-xml>
<http method="post" url="http://myurl.com/page2.cfm">
    <http-param name="Login">sigge</http-param>
    <http-param name="Password">hej123</http-param>
    <http-param name="doLogin">Logga in</http-param>
    <loop item="currField">
        <list>
            <var name="ctxtNewInputs" />
        </list>
        <body>
             <script><![CDATA[
                item = (NvPair) currField.getWrappedObject();
                SetContextVar("itemName", item.name);
                SetContextVar("itemValue", item.value);
            ]]></script>
            <http-param name="${item.name}"><var name="itemValue" /></http-param>
        </body>
    </loop>
     <script><![CDATA[
        String keys="";
        for(int i=0;i<http.headers.length;i++) {
            keys+=(http.headers[i].key + "=" + http.headers[i].value +"\n---\n");
        }
        SetContextVar("myCookie", keys);
    ]]></script>
    <file action="write" path="c:/kaka.txt">
        <var name="myCookie"/>
    </file>        
</http>
</html-to-xml>
</var-def>

Редактировать: при проверке я заметил, что cookie установлен в WebHarvest, даже если заголовок http не может быть найден программно. Возможно ли, что некоторые заголовки ответа скрыты от использования?

Кто-нибудь знает обходной путь для этой проблемы?

Спасибо и всего наилучшего, SiggeLund

1 ответ

Способ получения значения заголовка http в пользовательскую переменную, заданную для всей конфигурации, заключается в следующем:

<http url="your.url.here" method="GET">
    <!--Any settings you apply for the POST/GET call-->
</http>
<!--Now you've got your http object you are going to get header value from -->
<!--At it simplest the acquisition of value goes like the below-->
<var-def name="fifth_header_val">
      <script return="http.headers[5].value"/>
</var-def>

Выше, просто чтобы дать подсказку. Вы можете перебирать индекс http.headers и собирать ключи и значения, необходимые для вашей конкретной задачи.

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