我有一个服务监听 github 服务挂钩,以执行自动部署。有时我需要手动触发(无需 github 干预)。为此,我正在模拟 github 发送的 POST 请求(post-receive-URLs)。
我的数据(my.json
)看起来像这样(github发送的内容的有限子集 - 我不需要更多):
{
"action" : "deploy_from_scratch_with_bundle",
"pusher" : { "email" : "[email protected] /cdn-cgi/l/email-protection" },
"ref" : "refs/heads/master"
}
我尝试用curl 发布:
curl -X POST $URL --data-urlencode "@my.json" --header "Content-Type: application/x-www-form-urlencoded"
问题是 github 的 POSTing 是这样的:
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...
看到那个payload=
那里?这看起来像一个表单字段。我不知道如何将表单字段与 urlencoding 结合起来。要发布表单字段,我会这样做:
curl -X POST $URL -F "[email protected] /cdn-cgi/l/email-protection"
但 JSON 不会进行 url 编码。我怎样才能两者兼得?