使用Linux CURL的SOAP MTOM附件

时间:2012-08-08 07:51:08

标签: linux soap curl mtom

到目前为止,我一直使用简单的base64封装并将它们内联放入SOAP附件 - 所有这些都是由CURL完成的。现在我有了一个新请求,其中附件需要作为MTOM附件发送,问题是:是否可以使用linux curl?

我可以看到使用JAX-WS是可能的,但为了做到这一点,我们必须开发新的客户端,这实际上不是我们的最佳选择。

请告诉我是否有可能,如果是的话,请给我任何提示如何做。

1 个答案:

答案 0 :(得分:1)

您可以使用curl post在base64编码中包含文件内容。

以下是一个例子:

  1. 安装了来自axis2的mtom示例并为您工作
  2. 构造以下示例req.xml
  3. $ cat req.xml

    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:mtom="http://ws.apache.org/axis2/mtomsample/" xmlns:xm="http://www.w3.org/2005/05/xmlmime">
       <soap:Header/>
       <soap:Body>
          <mtom:AttachmentRequest>
             <mtom:fileName>one.txt</mtom:fileName>
             <mtom:binaryData xm:contentType="application/txt">SSBhbSB0aGUgZ3JlYXRlc3Qu</mtom:binaryData>
      </mtom:AttachmentRequest>
       </soap:Body>
    </soap:Envelope>
    
    1. 使用curl发布请求
    2. $ cat req.xml | curl -X POST -H'Content-type:application / soap + xml'-d @ -
          http://yourmachine.com:8080/axis2/services/MTOMSample.MTOMSampleSOAP12port_http/

      <?xml version='1.0' encoding='UTF-8'?>
      <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
        <soapenv:Body>
          <ns2:AttachmentResponse xmlns:ns2="http://ws.apache.org/axis2/mtomsample/">
            File saved succesfully.
          </ns2:AttachmentResponse>
        </soapenv:Body>
      </soapenv:Envelope>
      

      这对你有用吗?