2010-11-29 6 views
0

Наш клиент имеет простую настройку.Автоматическая подача формы с PERL - отладка!

Страница A имеет форму, которая отправляется на страницу B, которая отображает результаты запроса. К сожалению, нет другого доступа к API или БД для получения данных.

Поскольку нам нужно часто выполнять этот запрос, мы решили автоматизировать это представление с помощью Perl.

Я определил пары значений ключа формы страницы A со снифером и воспроизвел код. Однако при запуске страницы программы B выдает ошибку HTTP 500 без каких-либо дополнительных значимых объяснений.

Любые указатели для отладки этого кода? Код сам по себе прост:

 
use strict; 
    use warnings; 
    use LWP; 
    my $browser = LWP::UserAgent->new; 

    my $url = "targeturl.asp" 
    my $response = $browser->post($url, 
    [ 
    "HisSort" => "1", 
    "RTsort" => "", 
    "chkHisRun" => "on", 
    "chkRTRun" => "on", 
    "optAdHoc" => "on", 
    "optHist" => "", 
    "optServer" => "servername", 
    "optStatus" => "", 
    "optWhat" => "H", 
    "txtEnd" => "", 
    "txtFields" => "1,0,10,17,11,18,24,19,21,25,1", 
    "txtHEnd" => "11/3/2010", 
    "txtHStart" => "11/1/2010", 
    "txtServer" => "", 
    "txtStart" => "", 
    ] 
); 

Примечание: У меня нет доступа к источнику страницы A или B страницы

+0

Возможно, вы должны указать полный URL-адрес. – Benoit 2010-11-29 12:45:57

+0

Если вы отправляете идентичный запрос, вы получите идентичный ответ. Поэтому вам нужно выяснить, где ваш запрос отличается от вашего браузера. Например, есть куки? Ваш скрипт Perl, похоже, не пытается установить заголовки в соответствие с браузерами - возможно, страница B не может проанализировать User-Agent, скажем. – 2010-11-29 13:04:03

ответ

0

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

Мне пришлось попробовать комбинации грубой силы (путем тестирования с помощью страницы А), чтобы узнать, что именно ожидала страница B.

Спасибо всем, кто вызвался помочь.

1

Во-первых, я предлагаю смотреть на WWW::Mechanize который является дружелюбным оберткой LWP. Во-вторых, если ваш HTTP-клиент получает 500 ошибок, тогда в журналах ошибок веб-сервера должно быть что-то более значимое. И, наконец, как отметил Матфей, ​​вам нужно внимательно изучить запрос, отправленный браузером, и выяснить, как он отличается от запроса, который отправляет ваша программа Perl.

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