我正在使用Perl 5.16和REST :: Client。
我的代码如下:
my $client = REST::Client->new();
$client->setHost($server_address);
my $url = "www.myservice.com/rest/do";
my $json = JSON->new;
my $json_request = $json->encode($request);
$client->addHeader("x-request-header", $base64Header);
$client->addHeader("Content-Type", "application/json");
$client->POST($url, $json_request);
此代码始终生成HTTP状态405(不允许使用方法)。
但是,当我只使用具有相同细节的curl时,响应成功:
sendCURL($client->getHost().$url, $json_request, $base64Header);
sub sendCURL {
my $url = $_[0];
my $data = $_[1];
my $header = $_[2];
my $curl = "curl --data \'".$data."\' --header \"Content-Type: application/json\" --header \"x-request-header: ".$header."\" ".$url;
print $curl."\n";
my $response = system $curl;
print $response."\n";
}
请注意,curl请求肯定是POST(--data参数导致POST请求),我确信该服务正在等待POST。
它必须是perl模块REST :: Client中的一个问题。 也许我使用它错了?
答案 0 :(得分:1)
您是否可以访问服务器日志?
curl请求可能是GET,而不是POST。
您有API文档吗?它说使用POST吗?
如果是,那么它就是服务器配置问题。如果API文档没有说使用POST那么它就是你。
答案 1 :(得分:0)
我知道这是一篇较老的帖子“再次是相对的”!
我偶然发现了同样的问题,我的解决方案是将请求方法从POST改为PUT并且它做到了。