使用 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標誌)。

相關內容