我需要帮助弄清楚将以下数据发送到 URL 所需的 cURL 请求。
{"requestid":"555555",
"partnermatchid":"10000-000-0000-0000-000",
"usercontext":{"ipaddressmasked":"XXX.XXX.X.XXX",
"useragent":"mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.10 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36",
"country":"us"},
"pagecontext":{"pagetypeid":"2","numslots":"3"},
"istest":false}
我的主要问题是,我不知道如何格式化上面的有效负载以将其正确发送到 URL。到目前为止,我一直在使用-d
和-X POST
命令。我正在使用 Git Bash。
我感谢您的帮助和意见。
答案1
它应该是这样的:
echo '{"requestid":"555555",
"partnermatchid":"10000-000-0000-0000-000",
"usercontext":{"ipaddressmasked":"XXX.XXX.X.XXX",
"useragent":"mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.10 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36",
"country":"us"},
"pagecontext":{"pagetypeid":"2","numslots":"3"},
"istest":false}' | curl --data-binary @- -H "Content-Type: text/json" <URL>
有趣的部分:
echo
开头的 只是为了将主体内容放入管道中。curl
请注意使用单引号来防止 bash 解释任何引号或 JSON 中的任何内容。- 的用途
--data-binary
是指示curl
发送不加修改的原样正文。部分@-
指示它从 stdin 读取(在本例中为来自 的管道)echo
。 - 可能不需要 `-H“Content-Type:text / json”,但如果存在请求正文并且未指定内容类型,服务器通常会变得脾气暴躁。
- 我做到了不是包含一个
User-Agent
标头。JSON 中有一个 UA 字符串,因此希望服务器不会对 UA 标头过于挑剔,但curl
如果您愿意,可以轻松覆盖 的默认 UA 字符串。 <URL>
当然是您要向其发送 POST 的 URP。请注意,如果它是 HTTPS URL 并且证书不受信任curl
,则需要告知curl
使用不安全模式(-k
标志)。