
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 -d
und 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
echo
am Anfang dient nur dazu, den Textinhalt in die Pipe zu übertragencurl
. 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-binary
weist an,curl
den 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-Agent
Header 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önnencurl
die 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 verwendencurl
müssen ( Flag), wenn es sich um eine HTTPS-URL handelt und das Zertifikat nicht als vertrauenswürdig eingestuft wird.curl
-k