使用cURL命令行发布XML文件

使用cURL命令行发布XML文件,xml,command-line,curl,Xml,Command Line,Curl,如何将XML文件发布到本地服务器http://localhost:8080从命令行使用cURL 我应该使用什么命令?从中,我相信这些是您正在寻找的机器人: -F/--form (HTTP)这让curl模拟用户按下提交按钮的填充表单。这导致curl根据RFC2388使用内容类型multipart/formdata发布数据。这允许上载二进制文件等,以强制“内容”部分成为文件,并在文件名前面加上@符号 例如,要将密码文件发送到服务器,其中“password”是输入/etc/passwd的表单字段的名称

如何将XML文件发布到本地服务器
http://localhost:8080
从命令行使用cURL

我应该使用什么命令?

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

-F/--form

(HTTP)这让curl模拟用户按下提交按钮的填充表单。这导致curl根据RFC2388使用内容类型multipart/formdata发布数据。这允许上载二进制文件等,以强制“内容”部分成为文件,并在文件名前面加上@符号

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

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

因此,在您的情况下,这类似于

curl-F file=@/some/file/on/your/local/diskhttp://localhost:8080

如果该问题与其他哈德逊问题相关,请使用它们提供的命令。使用命令行中的XML进行以下操作:

$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url
读这本书。在-d参数的抽象后面

-d/--数据

(HTTP)以指定的格式发送指定的数据 在中向HTTP服务器发送请求 与浏览器在 用户已填写HTML表单,并且 按下提交按钮。这将 使curl将数据传递给 使用内容类型的服务器 application/x-www-form-urlencoded。 与-F/--form进行比较

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

如果更多地使用这些选项中的任何一个 在同一命令行上执行多次, 指定的数据项将被删除 合并在一起的 &-象征。因此,使用'-d name=daniel -d skill=loous'将生成一个如下所示的帖子块 “name=daniel&skill=loosy”

如果数据以字母开头 @,其余的应该是要删除的文件名 从中读取数据,或者-如果需要 curl从stdin读取数据。这个 文件的内容必须已被删除 URL编码。还可以创建多个文件 必须具体说明。从文件中过帐数据 因此,命名为“foobar”将与 --数据@foobar


使用Jenkins 1.494,我能够使用
curl
--form
参数将文件发送到Ubuntu Linux 12.10上的作业参数:

curl--form name=myfileparam--form file=@/local/path/to/your/file.xml\
-Fjson='{“参数”:{“名称”:“myfileparam”,“文件”:“文件”}'\
-Fsubmit=Build\
http://user:password@Jenkinserver/job/jobname/build
在Jenkins服务器上,我配置了一个接受单个参数的作业:名为
myfileparam
的文件上载参数

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

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

第三行激活表单的Build按钮。第四行是带有“/build”后缀的作业URL


如果此调用成功,curl将返回
0
。如果不成功,服务的错误或异常将打印到控制台。这个答案从中吸取了很多,我根据自己的需要对其进行了解构和重新工作。

下面是如何在Windows上使用curl命令行在Windows上发布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-i-xpost-H“内容类型:text/xml”-d^
"^                ^
^                                           ^
^Some-Param-01^^
^SomePassW0rd^^
^00^           ^
^约翰·史密斯^^
^9.97^                 ^
^4111111111111111^       ^
^1118^                   ^
^123^          ^
^1^            ^
^一些参考文本^^
^john@smith.com^       ^
^123.4.56.7^                 ^
^^                         ^
^^                         ^
^                                          ^
" "http://localhost:8080"

如果在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
curl-H“内容类型:application/xml”-d“MeHello!”http://localhost:8080/webapp/rest/hello
您可以使用选项--data with file

将xml内容写入名为is soap_get.xml的文件,并使用curl命令发送请求:

curl-X POST--标题“内容类型:text/xml;charset=UTF-8”--data@soap\u get.xml您的url


如果有多个标题,则可能需要使用以下内容:

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 
curl-X POST--header'Content Type:multipart/form data'--header'Accept:application/json'--header'Authorization:'-F file=@/home/xxx/Desktop/customers.json'-API\u SERVER\u 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
${my_xml}=@”
文件夹名
"@
${my\u curl}=“c:\curl.exe”
${cookie}=“c:\cookie.txt”
${zimbra_soap_url}=”https://zimbra:7071/service/admin/soap"
${curl\u getfolder\u args}=“-b”,“${cookie}”,
“--header”,“内容类型:text/xml;charset=UTF-8”,
“--沉默”,
“--data raw”、“${my_xml}”,
--url“,“${zimbra\u soap\u url}”
[xml]${my_response}=&${my_curl}${curl\u getfolder\u args}
${my_response}.Envelope.Body.GetFolderResponse.folder.id

此解决方案的另一个好处是能够命名要发送的文件(与上面选择的解决方案不同),因此您可以发送多个文件。格式为
file=@-${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