2010-12-22 7 views
22

Wie kann ich ein Double-Quote-Zeichen mit curl.exe im Parameter -d senden. Ich möchte das doppelte Anführungszeichen nicht codieren. Da die -d-Daten in doppelte Anführungszeichen eingeschlossen werden müssen, scheint es mir nicht zu funktionieren.Wie doppelte Anführungszeichen in -d Parameter für curl.exe senden?

Oder gibt es ein anderes Flag für curl.exe, das es anweist, einen Dateiinhalt für das gesamte Formular Postdaten zu verwenden?

Antwort

11

Sie können mit Sicherheit doppelte Anführungszeichen vermeiden. Wie Sie das tun, hängt von Ihrem Betriebssystem und Ihrer Shell ab, die Sie nicht angeben. Unter Windows würden Sie^als Escape-Zeichen verwenden.

Sie können dies auch tun:

curl [...] -d @filename 

... die Post-Daten aus einer Datei mit dem Namen Dateinamen liest.

Google und/oder Mann ist dein Freund.

http://curl.haxx.se/docs/manpage.html

+0

Der -d @ Dateiname war, was ich gesucht habe. Beim Lesen der Manpage dachte ich, dass @filename nur für das Argument -F funktioniert. Ich wusste nicht, dass es auch mit -d funktioniert. – slolife

5

Sie können die Daten mit einfachen Anführungszeichen umgeben und doppelte Anführungszeichen verwenden.

+4

Und dann sollte er besser beten, dass es keine einfachen Anführungszeichen in den Daten gibt, die gepostet werden sollen? – martona

+1

@martona Die Frage ist sehr spezifisch für doppelte Anführungszeichen. – Isac

+0

Ja, mein Problem war mit doppelten Anführungszeichen, aber jetzt, da ich weiß, dass -d @filename funktioniert, muss ich mich um keine Anführungszeichen kümmern. – slolife

22

Meine curl.exe Arbeiten mit dieser Form:

-d "{\"param\":\"value\"}" 

dh doublequotes um Daten und doublequotes innerhalb

+0

Nicht unter Windows, in anderen Shells ja. – Nicholi

+6

Ich versuchte in Windows 8.1 Eingabeaufforderung und die Flucht mit Backslash funktioniert gut! – user3523091

+0

Das funktioniert für mich in Windows 10 DOS-Befehls-Shell. Allerdings musste ich auch alle einfachen Anführungszeichen entfernen und durch doppelte Anführungszeichen ersetzen. Hier ist zum Beispiel der Hello World SendGrid v3 API Aufruf: curl --request POST --url https://api.sendgrid.com/v3/mail/send --header "Autorisierung: Bearer YOUR_API_KEY" --header "Content- Geben Sie Folgendes ein: application/json "--data" {\ "personalisations \": [{\ "to \": [{\ "email \": \ "[email protected] \"}]}], \ "from \ ": {\" email \ ": \" [email protected] \ "}, \" subject \ ": \" Hallo, Welt! \ ", \" content \ ": [{\" type \ ": \ "text/plain \", \ "value \": \ "Heya! \"}]} " –

5

Für das Entkommen von doppelten Anführungszeichen Frage mit umgekehrten Schrägstrich maskiert, ich finde das Verdreifachen der Doppelquoten funktioniert von der Schale:

curl -d {"""foo""":"""bar"""} 

während der doublequotes Verdoppelung einer Batch-Datei arbeitet aus:

curl -d {""foo"":""bar""} 

, die für Tests in der Schale zuerst ziemlich ärgerlich ist.

Verwandte Themen