使用 cURL 将有效负载传递到 URL

使用 cURL 将有效负载传递到 URL

我需要帮助弄清楚将以下数据发送到 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标志)。

相关内容