
次のデータを 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
先頭の は、本体の内容を にパイプで渡すためだけのものです。bashcurl
が引用符や JSON 内の何かを解釈するのを防ぐために、一重引用符を使用していることに注意してください。- の使用は、本文をそのまま変更せずに送信するように
--data-binary
指示します。の部分は、stdin (この場合は、 からのパイプ) から読み取るように指示します。curl
@-
echo
- `-H "Content-Type: text/json" は必要ないかもしれませんが、リクエスト本文がありコンテンツタイプが指定されていない場合、サーバーは不機嫌になることがよくあります。
- やったないヘッダーを含めます
User-Agent
。JSON には UA 文字列が含まれているので、サーバーが UA ヘッダーにこだわることはないでしょうが、curl
必要に応じて のデフォルトの UA 文字列を簡単に上書きできます。 <URL>
は、もちろん、POST を送信する URP です。HTTPS URL であり、証明書が によって信頼されていない場合は、非セキュア モード (フラグ) を使用するようにcurl
指示する必要があることに注意してください。curl
-k