답변:
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: */*
"msg1=Hello&msg2=World"
? 이것은 &
서버로 전송하는 잘못된 것을 의미하는 매개 변수 사이 를 인코딩 합니다.
--data-urlencode
각 키-값 쌍마다 하나씩 여러 개의 매개 변수를 사용하십시오 .
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")"
대신에.
echo "$URL" | sed 's/ /%20/'
이있는 경우 옳은 일을하지 않습니다 %
URL에 문자. 또한, 공간은 일반적으로 부호화된다 +
(그리고 +
등 %2b
). 신뢰할 수있는 Perl 솔루션을 추천합니다.
sed 's/ /%20/g'
번역 할 공간이 두 개 이상인 경우 ...
msg = '='
?