当我直接为变量$ connection_name指定名称时,此脚本可以正常工作,但我想获取用户输入并将其分配给变量。当我这样做时,它不起作用。我收到错误400错误请求。
#!/usr/bin/perl
use strict;
use warnings;
use LWP;
my $ua = LWP::UserAgent->new;
my $server_endpoint = "XXXX"
# Get name for connection
print "Connection Name?";
my $connection_name= <>;
print $connection_name;
# HTTP request header fields
my $req = HTTP::Request->new(POST => $server_endpoint);
$req->header('content-type' => 'application/json');
# POST data in the HTTP request body
my $post_data = "{
\"name\":\"$connection_name\",
\"origin_country\":\"us\",
\"datasource_type\":\"cfdcb449-1204-44ba-baa6-9a8a878e6aa7\"
}"
$req->content($post_data);
my $resp = $ua->request($req);
if ($resp->is_success) {
my $message = $resp->decoded_content;
print "Received reply: $message\n";
}
else {
print "HTTP POST error code: ", $resp->code, "\n";
print "HTTP POST error message: ", $resp->message, "\n";
}
答案 0 :(得分:6)
当您对$connection_name
进行硬编码时,您可能没有像现在这样包含换行符。添加
chomp($connection_name);
请使用合适的JSON生成器。
use JSON::XS qw( encode_json );
my $post_data = encode_json({
name => $connection_name,
origin_country => "us",
datasource_type => "cfdcb449-1204-44ba-baa6-9a8a878e6aa7",
});