
다음 데이터를 URL로 보내는 데 필요한 cURL 요청을 파악하는 데 도움이 필요합니다.
{"requestid":"555555",
"partnermatchid":"10000-000-0000-0000-000",
"usercontext":{"ipaddressmasked":"XXX.XXX.X.XXX",
"useragent":"mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.10 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36",
"country":"us"},
"pagecontext":{"pagetypeid":"2","numslots":"3"},
"istest":false}
내 주요 문제는 URL로 올바르게 전송되도록 위의 페이로드 형식을 지정하는 방법을 알 수 없다는 것입니다. 지금까지는 -d
및 명령을 활용해 왔습니다 -X POST
. Git Bash를 사용하고 있습니다.
귀하의 도움과 의견에 감사드립니다.
답변1
다음과 같아야 합니다.
echo '{"requestid":"555555",
"partnermatchid":"10000-000-0000-0000-000",
"usercontext":{"ipaddressmasked":"XXX.XXX.X.XXX",
"useragent":"mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.10 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36",
"country":"us"},
"pagecontext":{"pagetypeid":"2","numslots":"3"},
"istest":false}' | curl --data-binary @- -H "Content-Type: text/json" <URL>
흥미로운 부분:
- 처음
echo
에는 본문 내용을 파이프로 가져오는 것입니다curl
. bash가 따옴표나 JSON의 어떤 내용도 해석하지 못하도록 작은 따옴표를 사용한다는 점에 유의하세요. - 의 사용은 본문을 수정하지 않은 그대로 그대로 보내도록
--data-binary
지시하는 것입니다 .curl
부품@-
은 stdin(이 경우echo
. - `-H "Content-Type: text/json"은 필요하지 않을 수 있지만 요청 본문이 있고 콘텐츠 유형이 지정되지 않은 경우 서버는 종종 심술궂게 됩니다.
- 내가 그랬어~ 아니다헤더를 포함합니다
User-Agent
. JSON에 UA 문자열이 있으므로 서버가 UA 헤더에 대해 까다롭게 굴지 않기를 바라지만curl
원하는 경우 의 기본 UA 문자열을 쉽게 재정의할 수 있습니다. <URL>
물론 POST를 보내려는 URP입니다. HTTPS URL이고 인증서가 에서 신뢰되지 않는 경우 비보안 모드( 플래그) 를 사용하도록curl
지시해야 합니다 .curl
-k