2017-04-20 40 views
0

我是REST :: Client模块的新手。 我做了一个脚本,将通过上述模块调用API。下面REST ::客户端给出错误500不是SCALAR引用

是我的脚本:

use REST::Client; 
use Data::Dumper; 

my $client = REST::Client->new(); 

my $resp = $client->request(
    'POST', 
    "https://api.icims.com/customers/{ID}/search/people", 
    { 
     'Connection' => 'close', 
     'Link'  => 'https://api.icims.com/customers/{ID}/people/;rel="person"; 
    title="Person Profile"', 
     'Content-Length' => '280', 
     'Content-Type'  => 'application/json', 
     'Content-Encoding' => 'gzip', 
     'Host'    => 'api.icims.com', 
     'User-Agent'  => 'Apache-HttpClient/4.2.1 (java 1.5)', 
     'Accept-Encoding' => 'gzip,deflate', 
     Accept    => 'application/json' 
    } 
); 

print Dumper($resp->{_res}->{_content}); 

,这是印刷如下回应:

$VAR1 = '500 Not a SCALAR reference'; 

请建议。

+0

你把'{ID}'放在那里,还是在你的程序中有一个真实的ID?如果是这样,它应该如何知道ID? – simbabque

+0

'Accept =>'application/json''应该是''Accept'=>'application/json''? –

+1

@simbabque我的错误,谢谢 –

回答

0

您错过了正文您的请求。 A POST request with REST::Client应该有身体第一,然后可选标题。

POST($网址,[$ body_content,%$头])

瓶坯HTTP POST将所指定的资源。采用自定义请求标头的可选正文内容和hashref。

由于您似乎没有身体,只需使用undef即可。

my $resp = $client->request(
    'POST', 
    "https://api.icims.com/customers/{ID}/search/people", 
    undef,            # here 
    { 
     'Connection' => 'close', 
     'Link'  => 'https://api.icims.com/customers/{ID}/people/;rel="person";title="Person Profile"', 
     'Content-Length' => '280', 
     'Content-Type'  => 'application/json', 
     'Content-Encoding' => 'gzip', 
     'Host'    => 'api.icims.com', 
     'User-Agent'  => 'Apache-HttpClient/4.2.1 (java 1.5)', 
     'Accept-Encoding' => 'gzip,deflate', 
     Accept    => 'application/json' 
    } 
); 

这可能是更好的使用POST方法。它更容易阅读。

my $resp = $client->POST(
    "https://api.icims.com/customers/ID/search/people", 
    undef, 
    { ... } 
); 
+0

感谢您的回复。 我试着用GET方法也不需要任何机构通过。 我仍然得到同样的错误。 – Aj06

+0

@ Aj06它适合我。它显然给了我一个错误的回答,因为ID是错误的,但是你描述的错误没有发生。 – simbabque

+0

感谢您的帮助 – Aj06