如何使用命令行中的curl将xml文件发送/发布到本地服务器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
您可以使用选项--data with file .
将xml内容写入名为soap_get.xml的文件,并使用curl命令发送请求:
curl -X POST --header“Content-Type:text / xml; charset = UTF-8”--data @ soap_get.xml your_url
以下是在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"
如果该问题与您的其他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
阅读manpage . 跟随-d参数的摘要 .
-d / - data(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按下提交按钮时浏览器一样 . 这将导致curl使用content-type application / x-www-form-urlencoded将数据传递到服务器 . 与-F / - 形式比较 . -d / - 数据与--data-ascii相同 . 要纯数据二进制发布数据,您应该使用--data-binary选项 . 要对表单字段的值进行URL编码,您可以使用--data-urlencode . 如果在同一命令行中多次使用这些选项中的任何一个,则指定的数据将与分离&-symbol合并在一起 . 因此,使用'-d name = daniel -d skill = lousy'会生成一个看起来像'name = daniel&skill = lousy'的帖子块 . 如果用字母@开始数据,其余的应该是一个文件名来读取数据,或者 - 如果你想让curl从stdin读取数据 . 该文件的内容必须已经过URL编码 . 也可以指定多个文件 . 因此,可以使用--data @foobar来发布名为“foobar”的文件中的数据 .
从manpage,我相信这些是您正在寻找的机器人:
-F / - form <name = content>(HTTP)这使curl模拟用户按下提交按钮的填写表单 . 根据RFC2388,这会导致使用Content-Type multipart / form-data卷曲数据 . 这样可以上传二进制文件等 . 要强制“内容”部分为文件,请在文件名前加上@符号 . 例如,将密码文件发送到服务器,其中'password'是/ etc / passwd将作为输入的表单字段的名称:curl -F password = @ / etc / passwd www.mypasswords.com
所以在你的情况下,这将是类似的curl -F file=@/some/file/on/your/local/disk http://localhost:8080
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
如果您有多个 Headers ,则可能需要使用以下内容:
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
使用Jenkins 1.494,我能够使用 curl 和 --form 参数将文件发送到Ubuntu Linux 12.10上的作业参数:
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 . 如果不成功,则服务中的错误或异常将打印到控制台 . 这个答案需要很多an old blog post relating to Hudson,我根据自己的需要进行解构和重新设计 .
0
8 回答
如果您在Windows上使用 curl :
您可以使用选项--data with file .
将xml内容写入名为soap_get.xml的文件,并使用curl命令发送请求:
以下是在Windows上使用curl命令行在Windows上发布XML的方法 . 最好使用batch / .cmd文件:
如果该问题与您的其他Hudson问题相关,请使用他们提供的命令 .
您需要稍微更改它才能从文件中读取:
阅读manpage . 跟随-d参数的摘要 .
从manpage,我相信这些是您正在寻找的机器人:
所以在你的情况下,这将是类似的
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
如果您有多个 Headers ,则可能需要使用以下内容:
您可以使用此命令:
使用Jenkins 1.494,我能够使用
curl
和--form
参数将文件发送到Ubuntu Linux 12.10上的作业参数:在Jenkins服务器上,我配置了一个接受单个参数的作业:名为
myfileparam
的文件上载参数 .该curl调用的第一行使用名为
myfileparam
的参数构建Web表单(与作业中的相同);它的值将是名为/local/path/to/your/file.txt
的本地文件系统上的文件的内容 .@
符号前缀告诉curl发送本地文件而不是给定的文件名 .第二行定义了与第一行上的表单参数匹配的JSON请求:名为
myfileparam
的文件参数 .第三行激活表单的Build按钮 . 第四行是带有“/ build”后缀的作业URL .
如果此调用成功,则curl返回
0
. 如果不成功,则服务中的错误或异常将打印到控制台 . 这个答案需要很多an old blog post relating to Hudson,我根据自己的需要进行解构和重新设计 .