0

我有一个关于 curl 的具体问题。我想调用我的 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 命令中传递用户名和密码的参数?

4

2 回答 2

4

如果要发布XML文件,请尝试这样做:

curl -d "@./file.xml" -X POST -H 'Content-Type:text/xml' http://domain.tld/path

如果相反,用户名/密码由基本身份验证处理,请尝试使用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>
于 2013-02-05T23:21:56.193 回答
0

您是否在问如何通过 POST 发送该 XML 文件,同时在该 XML 中使用您的自定义用户和密码,所有这些都来自一个命令行?

如果是这样,那么通过 sed 管道化模板 XML 文件以让它填写正确的值可能是一个想法,然后让 curl 读取文件以从其标准输入中发布。

$ sed -e "s/my_username/$user/g" -e "s/my_password/$password/g" < 模板文件 | curl -d@- [网址]

于 2013-02-05T21:34:38.857 回答