我有以下代码:
my $j = encode_json { "arguments" => { "peer-port" => "4444" }, "method" => "session-set", }; $mech->get('http://192.168.1.10:9091'); my $req = HTTP::Request->new( 'POST', 'http://192.168.1.10:9091/transmission/rpc' ); $req->header( 'Content-Type' => 'application/json' ); $req->content($j); $mech->request($req);
运行时,我收到以下错误:
Error POSTing http://192.168.1.10:9091/transmission/rpc: Conflict at ./pia.pl line 48.
我无法找到关于这个特定错误的任何内容,也无法在WWW :: Mechanize的文档(或HTTP :: Request)中找到任何可以解释它的内容.脚本在执行正确的表单提交时没有问题,它只在这个上失败(目标http服务器显然只接受ajax/json请求).
"Conflict"是来自服务器的响应,您应该检查响应的详细信息.来自RFC2616:
10.4.10 409冲突
由于与资源的当前状态冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.响应主体应该包含足够的信息供用户识别冲突的来源....
因此,请检查您获得的完整响应($mech->content
)以找出冲突发生的原因.如果这无助于检查服务器端的日志或查阅服务器端API的文档.
在您的特定情况下,您可能需要X-Transmission-Session-Id
在请求中添加标题,有关详细信息,请参阅https://forum.transmissionbt.com/viewtopic.php?f=8&t=8393.