WWW::Mechanize 和“HTTP::消息内容必须是字节位于...”

发布于 2024-07-16 12:12:43 字数 1206 浏览 7 评论 0原文

我正在编写一个简单的程序,它必须更改波兰拍卖网站上的一些数据。

步骤之一涉及加载编辑页面、更改一个值并提交。

示例页面可以在这里查看: 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

我尝试对表单上的文本字段上的值进行重新编码 - 因此代理->字段(...编码)行,但它没有帮助。

目前我不知道表单上的什么会使 WWW::Mechanize 以这种方式失败,但我显然无法自行修复。

有什么办法可以调试这种情况吗? 或者也许我应该做一些不同的事情?

I'm writing simple program which has to change some data on Polish auction site.

One of the steps involves loading edit page, changing one value, and submitting it.

Sample page can be viewed here: http://depesz.com/various/new_item.php.html - this is just static copy of such edit page.

Relevant part of my perl code:

$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";

After first submit I get the page I showed. Then I change value in scheme_id field to 1025, and submit the form.

Afterward I get:

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

I tried to recode values on text fields on the form - hence the agent->field(... encode) lines, but it didn't help.

At the moment I have no idea what on the form can make WWW::Mechanize fail in such way, but I clearly cannot fix in on my own.

Is there any way to debug this situation? Or perhaps I should do something differently?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

澜川若宁 2024-07-23 12:12:43

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

Make sure your LWP and WWW-Mechanize modules are fully up to date. LWP fixed a number of encoding problems in late 2008, if I recall correctly.

(り薆情海 2024-07-23 12:12:43

我也有同样的问题。
解决了它:
我的 $newcontent = 编码('utf-8', $file);

在发布内容之前!

谢谢,
迈克

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

I have the same problem.
Solved it with :
my $newcontent = encode('utf-8', $file);

before posting the content!

thanks,
mike

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文