1

ポーランドのオークション サイトのデータを変更する簡単なプログラムを作成しています。

手順の 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 がこのように失敗するのかわかりませんが、明らかに自分で修正することはできません。

この状況をデバッグする方法はありますか? それとも、私は何か違うことをするべきですか?

4

2 に答える 2

0

私も同じ問題を抱えてる。で解決しました: my $newcontent = encode('utf-8', $file); コンテンツを投稿する前に!

ありがとう、マイク

http://www.perlmonks.org/?node_id=647935を参照してください

于 2012-07-15T21:13:31.623 に答える