1

我无法完成这项工作,我不断收到 400 错误的请求响应。非常感谢任何帮助,因为这是我第一次尝试编码 perl 和使用 JSON。我不得不删除一些敏感数据,因为这是工作。这个脚本的重点是简单地点击通过 JSON 发送 POST 数据的 URL 并打印响应。

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use JSON;


my $ua = LWP::UserAgent->new;
my $req = POST 'URL IS HERE';
my $res = $ua->request($req);
my $json = '{"warehouseId": "ID",
"tagMap":
  {"cameraId":["Name of camera"]
  },
"searchStartTimeStamp": 0,
"searchEndTimeStamp": 100000000000000,
"pageSize": 1,
 "client": 
  {"id": "username",
   "type": "person"}
}';


$req->header( 'Content-Type' => 'application/json' );
$req->content( $json );


    if ($res->is_success) {
print $req->content( $json );

    print $res->content;
} else {
    print $res->status_line . "\n";
}
exit 0;
4

1 回答 1

9

在完全填充之前执行请求!此行执行请求:

my $res = $ua->request($req);

但几行之后,您填写了一些字段:

$req->header( 'Content-Type' => 'application/json' );
$req->content( $json );

尝试交换它:

my $json = ...;

my $ua = LWP::UserAgent->new;
my $req = POST 'URL IS HERE';    
$req->header( 'Content-Type' => 'application/json' );
$req->content( $json );

my $res = $ua->request($req);

哦,从来没有$res->content。该方法的价值通常不是可用的。你总是想要

$res->decoded_content;
于 2013-07-09T16:28:56.650 回答