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先頭の は、本体の内容を にパイプで渡すためだけのものです。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

関連情報