커맨드 라인에서 curl을 사용하여 xml 파일을 로컬 서버 http : // localhost : 8080으로 보내거나 게시하려면 어떻게 해야합니까?
어떤 명령을 사용해야합니까?
커맨드 라인에서 curl을 사용하여 xml 파일을 로컬 서버 http : // localhost : 8080으로 보내거나 게시하려면 어떻게 해야합니까?
어떤 명령을 사용해야합니까?
답변:
해당 질문이 다른 Hudson 질문에 연결되어 있으면 질문을 제공하십시오. 명령 행에서 XML을 사용하여이 방법으로 :
$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
파일에서 읽으려면 약간 변경해야합니다.
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
맨 페이지를 읽으십시오 . -d 매개 변수에 대한 요약을 따릅니다.
-d /-데이터
(HTTP) 사용자가 HTML 양식을 작성하고 제출 단추를 누를 때 브라우저가 수행하는 것과 동일한 방식으로 POST 요청의 지정된 데이터를 HTTP 서버로 보냅니다. 이로 인해 curl은 content-type application / x-www-form-urlencoded를 사용하여 서버에 데이터를 전달합니다. -F /-form과 비교하십시오.
-d /-data는 --data-ascii와 동일합니다. 순수 이진 데이터를 게시하려면 --data-binary 옵션을 대신 사용해야합니다. 양식 필드의 값을 URL 인코딩하려면 --data-urlencode를 사용할 수 있습니다.
이러한 옵션 중 하나를 동일한 명령 줄에서 두 번 이상 사용하면 지정된 데이터 조각이 분리 및 기호와 함께 병합됩니다. 따라서 '-d name = daniel -d skill = lousy'를 사용하면 'name = daniel & skill = lousy'와 같은 포스트 청크가 생성됩니다.
@ 문자로 데이터를 시작하는 경우 나머지는 데이터를 읽을 파일 이름이거나-curl이 stdin에서 데이터를 읽으려면 파일 이름이어야합니다. 파일의 내용은 이미 URL 인코딩되어 있어야합니다. 여러 파일을 지정할 수도 있습니다. 따라서 'foobar'라는 파일에서 데이터를 게시하는 것은 --data @foobar로 수행됩니다.
-L
하지 마십시오-X POST
. @Tai가 제안한대로 -d를 사용하면 이런 일이 발생하지 않습니다.
-d
파일에서 줄 바꿈 을 제거 한다는 점에주의 하십시오. 이를 피하려면 --data-binary
대신 사용하십시오.
로부터 맨 , 나는이 당신이 찾고있는 드로이드 믿는다 :
-F/--form <name=content>
(HTTP) curl은 사용자가 제출 버튼을 눌렀을 때 채워진 양식을 에뮬레이트 할 수 있습니다. 이는 RFC2388에 따라 Content-Type multipart / form-data를 사용하여 curl to POST 데이터를 발생시킵니다. 이진 파일 등을 업로드 할 수 있습니다. 'content'부분을 파일로 만들려면 파일 이름 앞에 @ 기호를 붙입니다.
예를 들어, 비밀번호 파일을 서버로 보내려면 여기서 'password'는 / etc / passwd가 입력 될 양식 필드의 이름입니다.
curl -F password=@/etc/passwd www.mypasswords.com
따라서 귀하의 경우에는 다음과 같습니다
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
file=@-
파일을 파이프하려는 경우이 형식 이 도움이됩니다.
파일과 함께 --data 옵션을 사용할 수 있습니다.
이름이 soap_get.xml 인 파일에 xml 컨텐츠를 쓰고 curl 명령을 사용하여 요청을 보냅니다.
curl -X POST-헤더 "Content-Type : text / xml; charset = UTF-8"--data @ soap_get.xml your_url
젠킨스 1.494로, 내가 사용하는 우분투 리눅스 12.10에서 작업 매개 변수에 파일을 보낼 수 있었다 curl
과 --form
매개 변수 :
curl --form name=myfileparam --form file=@/local/path/to/your/file.xml \
-Fjson='{"parameter": {"name": "myfileparam", "file": "file"}}' \
-Fsubmit=Build \
http://user:password@jenkinsserver/job/jobname/build
Jenkins 서버에서 단일 매개 변수 (라는 파일 업로드 매개 변수)를 허용하는 작업을 구성했습니다 myfileparam
.
curl 호출의 첫 번째 줄은 매개 변수라는 이름의 웹 양식을 구성합니다. myfileparam
(작업과 동일) 인 . 그 값은 로컬 파일 시스템에있는 파일의 이름이 /local/path/to/your/file.txt
됩니다. @
기호 접두어 대신 주어진 파일 이름의 로컬 파일을 보내 컬 알려줍니다.
두 번째 줄은 첫 번째 줄의 양식 매개 변수와 일치하는 JSON 요청을 정의합니다. myfileparam
.
세 번째 줄은 폼의 빌드 버튼을 활성화합니다. 네 번째 줄은 "/ build"접미사가있는 작업 URL입니다.
이 호출이 성공하면 curl이를 반환합니다 0
. 실패하면 서비스의 오류 또는 예외가 콘솔에 인쇄됩니다. 이 답변은 Hudson과 관련된 오래된 블로그 게시물 에서 많이 가져 왔습니다.
Windows에서 curl 명령 행을 사용하여 Windows에서 XML을 POST하는 방법은 다음과 같습니다. 배치 / .cmd 파일을 더 잘 사용하십시오.
curl -i -X POST -H "Content-Type: text/xml" -d ^
"^<?xml version=\"1.0\" encoding=\"UTF-8\" ?^> ^
^<Transaction^> ^
^<SomeParam1^>Some-Param-01^</SomeParam1^> ^
^<Password^>SomePassW0rd^</Password^> ^
^<Transaction_Type^>00^</Transaction_Type^> ^
^<CardHoldersName^>John Smith^</CardHoldersName^> ^
^<DollarAmount^>9.97^</DollarAmount^> ^
^<Card_Number^>4111111111111111^</Card_Number^> ^
^<Expiry_Date^>1118^</Expiry_Date^> ^
^<VerificationStr2^>123^</VerificationStr2^> ^
^<CVD_Presence_Ind^>1^</CVD_Presence_Ind^> ^
^<Reference_No^>Some Reference Text^</Reference_No^> ^
^<Client_Email^>john@smith.com^</Client_Email^> ^
^<Client_IP^>123.4.56.7^</Client_IP^> ^
^<Tax1Amount^>^</Tax1Amount^> ^
^<Tax2Amount^>^</Tax2Amount^> ^
^</Transaction^> ^
" "http://localhost:8080"
The contents of the file must already be URL-encoded.
OP의 XML 파일은 반드시 그렇지 않습니다.