如何从命令行使用curl 将xml文件发送/发布到本地服务器http:// localhost:8080?
我应该使用什么命令?
如何从命令行使用curl 将xml文件发送/发布到本地服务器http:// localhost:8080?
我应该使用什么命令?
Answers:
如果该问题与您的其他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)将POST请求中的指定数据发送到HTTP服务器,就像浏览器在用户填写HTML表单并按下Submit按钮时所做的一样。这将导致curl使用内容类型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从stdin中读取数据。文件的内容必须已经被URL编码。也可以指定多个文件。因此,将使用--data @foobar从名为“ foobar”的文件中发布数据。
-L
,请不要使用-X POST
它,因为重定向请求也将使用POST。如果您按照@Tai的建议使用-d,则不会发生
-d
从文件中删除换行符。为避免这种情况,请--data-binary
改用。
从联机帮助页,我相信这些是您正在寻找的机器人:
-F/--form <name=content>
(HTTP)这可以使curl模仿用户按下提交按钮时所填写的表单。这将导致卷曲,以使用根据RFC2388的Content-Type multipart / form-data的POST数据。这样就可以上传二进制文件等。要强制“内容”部分为文件,请在文件名前添加@符号。
例如,要将密码文件发送到服务器,其中“ 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选项。
将xml内容写入名为soap_get.xml的文件,并使用curl命令发送请求:
curl -X POST --header“ Content-Type:text / xml; charset = UTF-8” --data @ soap_get.xml your_url
使用Jenkins 1.494,我能够使用curl
with --form
参数将文件发送到Ubuntu Linux 12.10上的job 参数:
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调用的第一行构造了一个Web表单,其参数名为myfileparam
(与作业中相同)。其值将是名为的本地文件系统上文件的内容/local/path/to/your/file.txt
。该@
符号前缀告诉curl发送的,而不是给定文件名的本地文件。
第二行定义了与第一行的表单参数相匹配的JSON请求:名为的文件参数myfileparam
。
第三行激活表单的“生成”按钮。第四行是带有“ / build”后缀的作业URL。
如果此调用成功,则curl返回0
。如果未成功,则将服务中的错误或异常打印到控制台。这个答案来自有关Hudson的旧博客文章,该文章很多,我根据我的需要对其进行了解构和重新设计。
这是在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^>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: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: <<Removed>>' -F file=@"/home/xxx/Desktop/customers.json" 'API_SERVER_URL' -k
The contents of the file must already be URL-encoded.
OP的XML文件肯定不是。