Übermitteln einer Nutzlast an eine URL mithilfe von cURL

Übermitteln einer Nutzlast an eine URL mithilfe von cURL

Ich brauche Hilfe beim Herausfinden der cURL-Anfrage, die zum Senden der folgenden Daten an eine URL erforderlich ist.

{"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}

Mein Hauptproblem ist, dass ich nicht herausfinden kann, wie ich die oben genannte Nutzlast formatieren muss, damit sie richtig an eine URL gesendet wird. Bisher habe ich die Befehle -dund verwendet -X POST. Ich verwende Git Bash.

Ich freue mich über Ihre Hilfe und Ihren Beitrag.

Antwort1

Es sollte ungefähr so ​​aussehen:

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>

Die interessanten Teile:

  • Das echoam Anfang dient nur dazu, den Textinhalt in die Pipe zu übertragen curl. Beachten Sie die Verwendung von einfachen Anführungszeichen, um zu verhindern, dass Bash die Anführungszeichen oder irgendetwas im JSON interpretiert.
  • Die Verwendung von --data-binaryweist an, curlden Textkörper genau so, wie er ist, unverändert zu senden. Der @-Teil weist an, von stdin zu lesen (in diesem Fall die Pipe von ) echo.
  • Die Option „-H „Content-Type: text/json“ ist möglicherweise nicht erforderlich, aber Server reagieren häufig übellaunig, wenn ein Anforderungstext vorhanden ist und der Inhaltstyp nicht angegeben ist.
  • Ich tatnichtFügen Sie einen User-AgentHeader hinzu. Sie haben eine UA-Zeichenfolge im JSON, also wird der Server hoffentlich nicht wählerisch sein, was den UA-Header angeht, aber Sie können curldie Standard-UA-Zeichenfolge problemlos überschreiben, wenn Sie möchten.
  • <URL>ist natürlich die URP, an die Sie Ihren POST senden möchten. Beachten Sie, dass Sie den unsicheren Modus verwenden curlmüssen ( Flag), wenn es sich um eine HTTPS-URL handelt und das Zertifikat nicht als vertrauenswürdig eingestuft wird.curl-k

verwandte Informationen