2010-11-23 3 views
3

PUT 요청을 사용하여 Windows에서 curl.exe를 통해 XML 데이터를 게시해야합니다. 컬 도움말컬을 사용하여 Windows에서 PUT 요청을 게시하는 방법은 무엇입니까?

내가 발견

-d/- 데이터 < 데이터 > HTTP의 POST 데이터 (H)

내가 < 데이터 > 무엇을 제공해야합니까? 경우

+2

이 옵션에는 컬을 사용하지 않았지만 설명서에 따르면 단순히 엔터티 본문으로 서버에 전달되는 문자열입니다. 데이터가 '@'로 시작하면 그 다음에 읽혀 서버로 전송되는 파일의 이름이옵니다. 매뉴얼 페이지 확인 : http://curl.haxx.se/docs/manpage.html –

+0

@Peter Štibraný 감사! 이것을 간과했는데 - 이것은 유닉스 커맨드 라인 구문에 특유한 것이고 윈도우에는 없다. – sergtk

답변

14

컬 샘플

 
# with inlining plain data 
curl -X PUT -d "payload" http://localhost 
# referrring file 
curl -X PUT -d @myXmlFile.xml http://localhost 

를 호출하여 창 컬 포트는 cygwin 갈 지원하지 않습니다. 그것은 Windows 용 리눅스와 같은 환경이며 또한 "적절한"컬을 제공합니다.

+0

나는 cygwin을 시도하고 getaddrinfo를 사용하여 오류를 얻었습니다. 다른 PC에서 실행 - 괜찮습니다. – sergtk

+0

그러면 컴퓨터 또는 네트워크 스택에 문제가있는 것 같습니다. OS가있는 다른 PC, 윈도우도 있습니까? –

+0

나는 윈도우에서 파일에서 데이터 페이로드를 게시하는 데 어려움을 겪었으며, 결국 데이터 파일이 UTF8 (FF FE 바이트로 시작)로 발견되어'-d' 대신'--data-binary'를 사용해야했습니다 ('--data'의 별명입니다). – eXavier

6

Windows에서 큰 따옴표로 묶인 인수 자체에 큰 따옴표가 있으면 큰 따옴표를 두 번 사용해야합니다.

예를 들어, "This is"quoted "payload"는 "This is"quoted ""payload "로 유닉스와는 매우 다릅니다.

예 :

curl -XPUT --data-binary "@uploadme.txt" 

가, 그렇지 않으면 당신은 이상한 오류를 얻을 수 있습니다 : 창에서

curl -X PUT -d "This is ""quoted"" payload" http://localhost 
2

당신이 보내는 파일에 대한 내부 따옴표를 @을 넣어해야합니다 파일의 내용을 URL로 사용하려고 시도 할 때 :

curl: (6) Couldn't resolve host 'upload' 
curl: (6) Couldn't resolve host 'me!' 

uploadme.txt에 "upload me!"가 포함되어 있습니다.)

+1

몇 시간 동안 추측 해 놨던 따옴표를 @ insde를 넣는 것이 었습니다. 고마워 폴 –

+1

@를 따옴표 안에 넣어야한다고 지정해 주셔서 감사합니다. 나는 이것을 알아 내려고 지난 몇 시간 동안 키보드에서 머리를 세게 치고 있었다. 다시 한 번 감사드립니다. –

관련 문제