使用curl命令行发送/发布xml文件

我怎样才能发送/张贴xml文件到本地服务器http:// localhost:8080使用curl从命令行?

我应该使用什么命令?

如果这个问题与其他Hudson问题有关,可以使用他们提供的命令。

$ curl -X POST -d '<run><log encoding="hexBinary">4142430A</log><result>0</result><duration>2000</duration></run>' \ http://user:pass@myhost/hudson/job/_jobName_/postBuildResult 

您需要稍微更改一下以从文件读取:

  $ curl -X POST -d @myfilename http://user:pass@myhost/hudson/job/_jobName_/postBuildResult 

阅读该手册。 抽象为-d参数。

-d / – 数据

(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像浏览器在用户填写HTML表单并按下提交button时所做的一样。 这将导致curl使用内容typesapplication / x-www-form-urlencoded将数据传递给服务器。 比较-F / – 表单。

-d / – 数据与–data-ascii相同。 要发布纯二进制数据,您应该使用–data-binary选项。 要对表单字段的值进行URL编码,您可以使用–data-urlencode。

如果在同一命令行上多次使用这些选项,则指定的数据片段将与分隔&符号合并在一起。 因此,使用'-d name = daniel -d skill = lousy'会产生一个看起来像'name = daniel&skill = lousy'的post。

如果用字母@开始数据,其余的应该是用来读取数据的文件名,或者 – 如果要curl从标准input读取数据。 该文件的内容必须已经被URL编码。 也可以指定多个文件。 从一个名为'foobar'的文件中发布数据将由–data @foobar完成。

从手册中,我相信这些是你正在寻找的机器人:

-F/--form <name=content>

(HTTP)这可以让curl模拟一个用户按下提交button的填充表单。 这导致根据RFC2388,使用Content-Type multipart / form-datacurlPOST数据。 这样可以上传二进制文件等等。为了强制“内容”部分成为一个文件,在文件名前加一个@符号。

例如,将密码文件发送到服务器,其中“password”是/ etc / passwd将作为input的表单字段的名称:

curl -F password=@/etc/passwd www.mypasswords.com

所以在你的情况下,这将是类似的东西
curl -F file=@/some/file/on/your/local/disk http://localhost:8080

你可以使用选项–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--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服务器上,我configuration了一个接受单个参数的作业:一个名为myfileparam的file upload参数。

curl调用的第一行使用名为myfileparam的参数(与作业中的参数相同)构造​​一个Web窗体; 它的值将是名为/local/path/to/your/file.txt的本地文件系统上的文件的内容。 @符号前缀告诉curl发送一个本地文件而不是给定的文件名。

第二行定义了与第一行的表单参数匹配的JSON请求:一个名为myfileparam的文件参数。

第三行激活窗体的生成button。 第四行是带有“/ build”后缀的作业URL。

如果这个调用成功,curl返回0 。 如果不成功,服务器的错误或exception将被打印到控制台。 这个答案需要从与哈德森有关的旧博客文章 ,我解构和重新为我自己的需要。

以下是在Windows上使用curl命令行在Windows上POST XML的方法。 更好地使用批处理/ .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 

如果你在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