模拟github服务挂钩与卷曲

dan*_*ast 3 json curl github urlencode

我有一个服务侦听github服务挂钩,以执行自动部署.有时我需要手动触发(没有github干预).为此,我正在模拟github发送的POST请求(post-receive-URLs).

我的data(my.json)看起来像这样(github发送的有限子集 - 我不需要更多):

{
  "action"      : "deploy_from_scratch_with_bundle",
  "pusher"      : { "email" : "my@email.com" },
  "ref"         : "refs/heads/master"
}
Run Code Online (Sandbox Code Playgroud)

我尝试用curl POST:

curl -X POST $URL --data-urlencode "@my.json" --header "Content-Type: application/x-www-form-urlencoded"
Run Code Online (Sandbox Code Playgroud)

问题是github是这样POST的:

payload=%7B%22pusher%22%3A%7B%22name%22%3A%22none%22%7D%2C%22repository%22%3
A%7B%22name%22%3A%liferay-plugins%22%2C%22created_at%22%3A%222011%2F12%2F07%2011%3A52...
Run Code Online (Sandbox Code Playgroud)

看到payload=那里?这看起来像一个表单字段.我不知道如何将表单字段与urlencoding结合起来.要POST表单字段,我会这样做:

curl -X POST $URL -F "payload=@my.json"
Run Code Online (Sandbox Code Playgroud)

但是JSON不会被url编码.我怎么去两个?

rkh*_*rov 6

curl $URL --data-urlencode payload@my.json