我正在玩GitHub web hooks,我想使用curl发布一些示例JSON。该请求应包含payload
POST参数,并将JSON字符串作为值。例如,这有效:
$ curl --form payload='{"foo":1}' http://somewhere
但我需要从文件中读取JSON(比如说foo.json
)。用@foo.json
替换JSON字符串会在请求正文中发布有效负载:
--------------------------8d0c6d3f9cc7da97
Content-Disposition: form-data; name="payload"; filename="foo.json"
Content-Type: application/octet-stream
{'foo':1}
--------------------------8d0c6d3f9cc7da97--
这不是我想要的,我需要将有效负载作为参数传递。我该怎么做?
答案 0 :(得分:1)
也许很傻但试试这个:
cat foo.json | xargs -I % curl --form payload='%' http://example.com
刚刚写了这个小东西,它起作用了:
var=`cat some.json` && curl --form payload="$var" http://lvh.me/test/index.php
答案 1 :(得分:0)
这是另一种Perl测试脚本。将目标URL作为第一个参数传递,将JSON提供给STDIN:
#!/usr/bin/env perl
use strict;
use warnings;
use LWP;
my $target = shift @ARGV or die "Need a target URL";
my $ua = LWP::UserAgent->new;
my $payload = do { local $/; <STDIN> };
my $response = $ua->post($target, { payload => $payload });
print $response->as_string;