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

1

确保您的 LWP 和 WWW-Mechanize 模块是最新的。如果我没记错的话,LWP 在 2008 年底修复了一些编码问题。

于 2009-04-03T20:44:19.943 回答
0

我也有同样的问题。解决它: my $newcontent = encode('utf-8', $file); 在发布内容之前!

谢谢,迈克

http://www.perlmonks.org/?node_id=647935

于 2012-07-15T21:13:31.623 回答