linux系统bash脚本通过curl发送xml数据实现webservices接口交互

卧听海啸

在 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 文件中。


文章版权声明:除非注明,否则均为宇凡的回忆原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,2321人围观)

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