ポーランドのオークション サイトのデータを変更する簡単なプログラムを作成しています。
手順の 1 つは、編集ページの読み込み、1 つの値の変更、および送信です。
サンプルページはここで見ることができます: 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";
最初に送信した後、私が示したページを取得します。次に、scheme_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 がこのように失敗するのかわかりませんが、明らかに自分で修正することはできません。
この状況をデバッグする方法はありますか? それとも、私は何か違うことをするべきですか?