[xml] curl 명령 행을 사용하여 XML 파일 전송 / 포스트

커맨드 라인에서 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로 수행됩니다.


답변

로부터 , 나는이 당신이 찾고있는 드로이드 믿는다 :

-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


답변

파일과 함께 –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"


답변

헤더가 여러 개인 경우 다음을 사용할 수 있습니다.

curl -X POST --header "Content-Type:application/json" --header "X-Auth:AuthKey" --data @hello.json Your_url


답변

이 명령을 사용할 수 있습니다 :

curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: <<Removed>>' -F file=@"/home/xxx/Desktop/customers.json"  'API_SERVER_URL' -k