Я пишу простую программу, которая должна изменить некоторые данные на польском аукционе.
Один из шагов включает загрузку страницы редактирования, изменение одного значения и его отправку.
Пример страницы можно посмотреть здесь: 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";
После первой отправки я получаю страницу, которую я показал. Затем я изменяю значение в поле circuit_id на 1025 и отправляю форму.
После этого я получаю:
HTTP::Message content must be bytes at /usr/local/share/perl/5.8.8/HTTP/Request/Common.pm line 91
Я пытался перекодировать значения в текстовых полях формы - отсюда строки agent-> field (... encode), но это не помогло.
В настоящий момент я понятия не имею, что на форме может привести к сбою WWW :: Mechanize таким образом, но я явно не могу исправить самостоятельно.
Есть ли способ отладить эту ситуацию? Или, может быть, я должен сделать что-то другое?