web-dev-qa-db-ja.com

curlコマンドラインを使用してXMLファイルを送信/投稿する

コマンドラインからcurlを使用して、xmlファイルをローカルサーバーに送信/ポストするにはどうすればよいですか? http:// localhost:8080

どんなコマンドを使うべきですか?

357
Arnab Sen Gupta

その質問が他のハドソンの質問と関連している場合は、それらが提供するコマンドを使用してください。このようにコマンドラインから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/ - 形式と比較してください。

-d/ - dataは--data-asciiと同じです。データを純粋にバイナリで投稿するには、代わりに--data-binaryオプションを使用してください。フォームフィールドの値をURLエンコードするには、 - data-urlencodeを使用できます。

これらのオプションのいずれかが同じコマンドラインで複数回使用されている場合、指定されたデータは分離記号(&)でマージされます。したがって、 '-d name = daniel -d skill = lousy'を使用すると、 'name = daniel&skill = lousy'のようなポストチャンクが生成されます。

データを文字@で始める場合、残りはデータの読み取り元のファイル名、または - curlに標準入力からデータを読み取らせる場合は - にします。ファイルの内容はすでにURLエンコードされている必要があります。複数のファイルを指定することもできます。したがって、 'foobar'という名前のファイルからのデータの投稿は--data @foobarで行われます。

463
Peter Schuetze

のマンページ から、私はこれらがあなたが探しているドロイドだと思います:

-F/--form <name=content>

(HTTP)これはユーザが送信ボタンを押した記入済みフォームをcurlエミュレートすることを可能にします。これにより、RFC 2388に従ったContent-Type multipart/form-dataを使用してcurlが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

176
Piskvor

オプション--dataをfileと共に使用できます。

Xmlコンテンツをsoap_get.xmlという名前のファイルに書き込み、curlコマンドを使用して要求を送信します。

curl -X POST --header "Content-Type:text/xml; charset = UTF-8" --data @ soap_get.xml your_url

43
NgaNguyenDuy

Jenkins 1.494では、curl--formパラメータを使用して、Ubuntu Linux 12.10上のジョブパラメータにファイルを送信できました。

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という名前のパラメーターを使ってWebフォームを作成します(ジョブの場合と同じ)。その値は/local/path/to/your/file.txtという名前のローカルファイルシステム上のファイルの内容になります。 @シンボル接頭辞は、与えられたファイル名の代わりにローカルファイルを送るようにcurlに伝えます。

2行目は、1行目のフォームパラメータと一致するJSONリクエスト、つまりmyfileparamというファイルパラメータを定義します。

3行目はフォームの[ビルド]ボタンをアクティブにします。 4行目は、 "/ build"サフィックスを付けたジョブのURLです。

この呼び出しが成功すると、curlは0を返します。失敗した場合、サービスからのエラーまたは例外がコンソールに出力されます。この答えは Hudsonに関連した古いブログ記事 から多くのことを取ります。

19
Steve HHH

Windowsでcurlコマンドラインを使用して、WindowsでPOST XMLを作成する方法は次のとおりです。そのためにはbatch/.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^>[email protected]^</Client_Email^>       ^
        ^<Client_IP^>123.4.56.7^</Client_IP^>                 ^
        ^<Tax1Amount^>^</Tax1Amount^>                         ^
        ^<Tax2Amount^>^</Tax2Amount^>                         ^
    ^</Transaction^>                                          ^
" "http://localhost:8080"
6
Gleb Esman

複数のヘッダがある場合は、次のようにします。

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

このコマンドを使用することができます:

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 
2
Musleh Uddin

Windowsで curl を使用している場合

curl -H "Content-Type: application/xml" -d "<?xml version="""1.0""" encoding="""UTF-8""" standalone="""yes"""?><message><sender>Me</sender><content>Hello!</content></message>" http://localhost:8080/webapp/rest/hello
0
Paul Vargas