[unix] curl 명령으로 URL을 인코딩하는 방법은 무엇입니까?

쿼리 매개 변수에 공간이있는 URL이 있습니다. 컬에서 이것을 사용하고 싶습니다.

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"

어느 것이나

Malformed Request-Line

내 이해에 따라 o / p는 쿼리 매개 변수에 존재하는 공간 때문입니다.

curl 명령에 URL을 제공하기 전에 자동으로 URL을 인코딩 할 수 있습니까?



답변

curl내부적으로 URL 인코딩을 지원합니다 --data-urlencode:

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

-G 또한 데이터를 URL에 추가해야합니다.

추적 헤더

> 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: */*


답변

 curl -G "$( echo "$URL" | sed 's/ /%20/g' )"

$URL번역하려는 URL은 어디에 있습니까 ?

URL에 여러 유형의 번역 (인코딩)이있을 수도 있으므로 다음과 같이하십시오.

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

대신에.


답변