2009-04-03 2 views
1

Я пишу простую программу, которая должна изменить некоторые данные на польском аукционе.WWW :: Mechanize и "HTTP :: Содержимое сообщения должно быть байтами в ..."

Один из этапов включает загрузку страницы редактирования, изменение одного значения и ее отправку.

Образец страницы можно посмотреть здесь: http://depesz.com/various/new_item.php.html - это просто статическая копия такой страницы редактирования.

Соответствующая часть моего PERL код:

$agent->form_number(1); 
$agent->submit(); 
$agent->form_number(1); 

my $q = $agent->current_form()->find_input('scheme_id'); 
$agent->field('scheme_id', '1025'); 
# $agent->field('description', encode('utf-8', $agent->value("description"))); 
# $agent->field('location', encode('utf-8', $agent->value("location"))); 
# $agent->field('transport_shipment_description', encode('utf-8', $agent->value("transport_shipment_description"))); 
$agent->submit; 
print $agent->response->decoded_content . "\n"; 

После первого отправить я получаю страницу я показал. Затем я меняю значение в поле schem_id на 1025 и отправлю форму.

Потом я получаю:

HTTP::Message content must be bytes at /usr/local/share/perl/5.8.8/HTTP/Request/Common.pm line 91 

Я попытался перекодировать значения на текстовых полей на форме - отсюда agent-> поле (...) кодируют линии, но это не помогло.

На данный момент я понятия не имею, что на форме может сделать WWW :: Mechanize терпят неудачу таким образом, но я, очевидно, не могу исправить самостоятельно.

Есть ли способ отладить эту ситуацию? Или, может быть, я должен сделать что-то по-другому?

ответ

1

Убедитесь, что модули LWP и WWW-Mechanize полностью обновлены. LWP исправил ряд проблем с кодированием в конце 2008 года, если я правильно помню.

+0

Примечание: Я не уверен, что это будет полностью решить эту проблему, но я не уверен, что еще нужно проверить. Я просто знаю, когда я сталкивался с этой ошибкой в ​​прошлом, это была проблема с кодировкой. Надеюсь, поможет. – Frakkle

+0

К сожалению, оба в курсе: => modver LWP Version 5,825 => modver WWW :: Механизируйте Версия 1,54 – 2009-04-03 21:10:48

+0

Пытались ли вы обновление еще раз? WWW :: Mechanize 1.56 изменил способ обработки кодировок: «Некоторое время Mech использовал HTTP :: Response :: Encoding, чтобы попытаться вывести правильное кодирование получаемой страницы. Теперь он позволяет LWP :: UserAgent выполнить работу и больше не требуется HTTP :: Response :: Encoding. " – cjm