我有一个关于卷曲的具体问题。我想调用我的xml页面,我正在从终端执行类似的操作:
curl -d @<xml page> <url>
然而,当我执行以下命令时,我得到以下内容:
Invalid request structure
在我的xml页面中,请求如下:
<example type="request">
<doLogin>
<userName>my_username</userName>
<password>my_password</password>
<...other details>
</doLogin>
</example>
如何在curl命令中传递用户名和密码的参数?
答案 0 :(得分:4)
如果您想发布XML
文件,请尝试执行以下操作:
curl -d "@./file.xml" -X POST -H 'Content-Type:text/xml' http://domain.tld/path
如果用户名/密码由 basic auth 处理,请尝试使用 unix shell 执行此操作:
user=$(xmllint --xpath '/example/doLogin/userName/text()' file.xml)
pass=$(xmllint --xpath '/example/doLogin/password/text()' file.xml)
curl -u "$user:$pass" http://domain.tld/path
XML
档案:
<?xml version="1.0" encoding="utf-8"?>
<example type="request">
<doLogin>
<userName>my_username</userName>
<password>my_password</password>
<...other details>
</doLogin>
</example>
答案 1 :(得分:0)
您是否在询问如何使用POST发送该XML文件,然后在该XML中使用您的自定义用户和密码,所有这些都来自一个命令行?
如果是这样,那么通过sed管道模板XML文件以使其填写正确的值可能是一个想法,然后让curl读取文件以从其stdin发布。
$ sed -e“s / my_username / $ user / g”-e“s / my_password / $ password / g”&lt; template_file | curl -d @ - [URL]