it-swarm.com.de

Gibt es eine Möglichkeit, die URL im Curl-Befehl zu codieren?

Ich habe eine URL, die Platz in ihrem Abfrageparameter hat. Ich möchte dies in Locken verwenden, z.

curl -G "http://localhost:30001/data?zip=47401&utc_begin=2013-8-1 00:00:00&utc_end=2013-8-2 00:00:00&country_code=USA"

was gibt aus

Malformed Request-Line

Nach meinem Verständnis ist o/p auf den im Abfrageparameter vorhandenen Platz zurückzuführen.

Gibt es eine Möglichkeit, die URL automatisch zu codieren, bevor sie für den Befehl curl bereitgestellt wird?

114
Aashish P.

curl unterstützt die URL-Codierung intern mit --data-urlencode:

$ curl -G -v "http://localhost:30001/data" --data-urlencode "msg=hello world" --data-urlencode "msg2=hello world2"

-G ist auch erforderlich, um die Daten an die URL anzuhängen.

Trace-Header

> GET /data?msg=hello%20world&msg2=hello%20world2 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
> Host: localhost
> Accept: */*
182
damphat
 curl -G "$( echo "$URL" | sed 's/ /%20/g' )"

Wo $URL ist die URL, auf der Sie die Übersetzungen durchführen möchten.

Es gibt auch mehr als eine Art von Übersetzung (Codierung), die Sie in einer URL haben können. Daher möchten Sie möglicherweise Folgendes tun:

curl -G "$(Perl -MURI::Escape -e 'print uri_escape shift, , q{^A-Za-z0-9\-._~/:}' -- "$URL")"

stattdessen.

6
Drav Sloan