在 Linux 的 Bash 脚本中,通过 curl 发送一个包含在变量中的 XML 数据(例如 POSTXML),并使用管道 (|) 将 echo 的输出传递给 curl。以下是具体的方法和示例:
1、使用 echo 和管道 (|)
通过 echo 输出变量内容,并使用管道将其传递给 curl。
POSTXML='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservice"> <soapenv:Header/> <soapenv:Body> <web:SomeMethod> <web:Parameter1>value1</web:Parameter1> <web:Parameter2>value2</web:Parameter2> </web:SomeMethod> </soapenv:Body> </soapenv:Envelope>' echo "$POSTXML" | curl -X POST \ -H "Content-Type: text/xml;charset=UTF-8" \ -d @- \ http://example.com/path/to/service
参数说明:
echo "$POSTXML":输出 POSTXML 变量的内容。
|:将 echo 的输出传递给 curl。
-d @-:curl 从标准输入(管道)读取数据作为请求体。
-H "Content-Type: text/xml;charset=UTF-8":设置请求头,指定内容类型为 XML。
http://example.com/path/to/service:SOAP 服务的 URL。
2、处理响应
将 curl 的响应保存到变量或文件中。
(1)、保存到变量
response=$(echo "$POSTXML" | curl -X POST \ -H "Content-Type: text/xml;charset=UTF-8" \ -d @- \ http://example.com/path/to/service) echo "$response"
(2)、保存到文件
echo "$POSTXML" | curl -X POST \ -H "Content-Type: text/xml;charset=UTF-8" \ -d @- \ -o response.xml \ http://example.com/path/to/service
参数说明:
-o response.xml:将响应保存到 response.xml 文件中。
文章版权声明:除非注明,否则均为宇凡的回忆原创文章,转载或复制请以超链接形式并注明出处。

还没有评论,来说两句吧...