쿼리 매개변수에 공백이 있는 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가 발생하는 것입니다.
컬 명령에 URL을 제공하기 전에 URL을 자동으로 인코딩하는 방법이 있습니까?
답변1
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: */*
답변2
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")"
대신에.