如何从命令行使用cURL将XML文件POST到本地服务器http://localhost:8080 ?
http://localhost:8080
我应该使用什么命令?
从从,我相信这些是你正在寻找的机器人:
-F/--form <name=content> 这让curl模拟一个用户按下提交按钮的填充表单。这导致curl根据RFC2388使用Content-Type multipart/form-data POST数据。这允许上传二进制文件等。要强制“content”部分是一个文件,请在文件名前加上@符号。 例如,要将密码文件发送到服务器,其中'password'是表单字段的名称,/etc/passwd将作为输入: curl -F password=@/etc/passwd www.mypasswords.com
-F/--form <name=content>
这让curl模拟一个用户按下提交按钮的填充表单。这导致curl根据RFC2388使用Content-Type multipart/form-data 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
如果该问题与您的其他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 Parameter的摘要。
- d /——数据 (HTTP)在HTTP协议中发送指定的数据 POST请求到HTTP服务器,在 就像浏览器一样 用户填写了HTML表单 按提交按钮。这将 使curl将数据传递给 服务器使用content-type 应用程序/ x-www-form-urlencoded。 比较-F/——form. -d/——data与——data-ascii相同。要发布纯二进制数据,您应该这样做 相反,使用——data-binary选项。 对表单的值进行url编码 你可以使用——data-urlencode. 如果这些选项中的任何一个使用次数较多 而不是在同一个命令行上, 指定的数据块将是 与分离合并在一起 和象征。因此,使用'-d name=daniel -d skill= crappy '将生成如下的帖子块 “name = daniel&技能=烂”。< / p > 如果数据以字母开头 @,其余的应该是一个文件名 读取数据,或者-如果你想 Curl从stdin读取数据。的 文件的内容必须已经是 url编码。多个文件也可以 被指定。从文件中发布数据 命名为'foobar'将因此完成 ——数据@foobar。< / p >
- d /——数据
(HTTP)在HTTP协议中发送指定的数据 POST请求到HTTP服务器,在 就像浏览器一样 用户填写了HTML表单 按提交按钮。这将 使curl将数据传递给 服务器使用content-type 应用程序/ x-www-form-urlencoded。 比较-F/——form.
-d/——data与——data-ascii相同。要发布纯二进制数据,您应该这样做 相反,使用——data-binary选项。 对表单的值进行url编码 你可以使用——data-urlencode.
如果这些选项中的任何一个使用次数较多 而不是在同一个命令行上, 指定的数据块将是 与分离合并在一起 和象征。因此,使用'-d name=daniel -d skill= crappy '将生成如下的帖子块 “name = daniel&技能=烂”。< / p >
如果数据以字母开头 @,其余的应该是一个文件名 读取数据,或者-如果你想 Curl从stdin读取数据。的 文件的内容必须已经是 url编码。多个文件也可以 被指定。从文件中发布数据 命名为'foobar'将因此完成 ——数据@foobar。< / p >
使用Jenkins 1.494,我能够在Ubuntu Linux 12.10上使用curl和--form参数将文件发送到作业参数:
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的文件上传参数。
myfileparam
curl调用的第一行使用名为myfileparam的参数构造了一个web表单(与作业中的相同);它的值将是本地文件系统中名为/local/path/to/your/file.txt的文件的内容。@符号前缀告诉curl发送一个本地文件,而不是给定的文件名。
/local/path/to/your/file.txt
@
第二行定义了一个与第一行的表单参数匹配的JSON请求:一个名为myfileparam的文件参数。
第三行激活表单的Build按钮。第四行是带有“/build”后缀的作业URL。
如果调用成功,curl返回0。如果不成功,则将来自服务的错误或异常打印到控制台。这个答案很大程度上来自一篇关于哈德逊的旧博客,我根据自己的需要对它进行了解构和重做。
0
下面是如何在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"
如果你在Windows上使用旋度:
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
你可以使用选项——data with file。
将xml内容写入名为soap_get.xml的文件,并使用curl命令发送请求:
curl -X POST——header "Content-Type:text/xml;charset=UTF-8"——data @soap_get.xml
如果你有多个头文件,那么你可能想使用以下方法:
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
Powershell + Curl + Zimbra SOAP API
${my_xml} = @" <?xml version=\"1.0\" encoding=\"UTF-8\"?> <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"> <soapenv:Body> <GetFolderRequest xmlns=\"urn:zimbraMail\"> <folder> <path>Folder Name</path> </folder> </GetFolderRequest> </soapenv:Body> </soapenv:Envelope> "@ ${my_curl} = "c:\curl.exe" ${cookie} = "c:\cookie.txt" ${zimbra_soap_url} = "https://zimbra:7071/service/admin/soap" ${curl_getfolder_args} = "-b", "${cookie}", "--header", "Content-Type: text/xml;charset=UTF-8", "--silent", "--data-raw", "${my_xml}", "--url", "${zimbra_soap_url}" [xml]${my_response} = & ${my_curl} ${curl_getfolder_args} ${my_response}.Envelope.Body.GetFolderResponse.folder.id