Perl使用REST::Client调用POST API报Not a SCALAR reference错误求助
问题原因
你调用REST::Client的POST方法时参数传递格式不符合模块要求:
- REST::Client的
POST方法要求传入三个独立参数:请求URL、请求体内容、请求头哈希引用,你错误将请求体和请求头塞进了同一个数组引用中,底层LWP库处理非标量的请求体内容时触发了报错 - 附带两个代码细节问题:
- 你已经将请求头定义为哈希引用
$headers,传参时不需要用%$headers解引用为哈希 - 示例中的请求URL
https:hereismyurl格式错误,缺少协议后的双斜杠,需修正为https://hereismyurl类的正确格式
- 你已经将请求头定义为哈希引用
修正后的代码
use REST::Client; use MIME::Base64; my $username = 'user'; my $password = 'passwrd'; # 修正URL格式 my $request_url = 'https://hereismyurl'; my $headers = { Authorization => 'Basic ' . encode_base64($username . ':' . $password), 'OSvC-CREST-Application-Context' => 'Test', 'Content-type' => 'application/json' }; my $body_content='{"id" :106197,"filters":[{"name": "Date Range","values":["2021-09-27T00:00:00.000Z","2021-09-28T00:00:00.000Z"}]}'; my $client = REST::Client->new(); # 修正POST传参格式,三个参数独立传递,直接传哈希引用$headers即可 $client->POST($request_url, $body_content, $headers); print $client->responseContent();
内容的提问来源于stack exchange,提问作者Priya Chatterjee
相关产品推荐
相关产品推荐

