使用 SOAP 从 VBA 调用 Web 服务

Posted

技术标签:

【中文标题】使用 SOAP 从 VBA 调用 Web 服务【英文标题】:Calling a Webservice from VBA using SOAP 【发布时间】:2008-10-27 23:37:36 【问题描述】:

我正在尝试在 Excel 宏中调用 Web 服务:

Set objHTTP = New MSXML.XMLHTTPRequest
objHTTP.Open "post", "https://www.server.com/EIDEServer/EIDEService.asmx"
objHTTP.setRequestHeader "Content-Type", "text/xml"
objHTTP.setRequestHeader "SOAPAction", "PutSchedule"
objHTTP.send strXML      

我得到以下回复:

  <?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
      <soap:Fault>
        <faultcode>soap:Client</faultcode>
        <faultstring>Server did not recognize the value of HTTP Header SOAPAction: PutSchedule.</faultstring>
        <detail />
      </soap:Fault>
    </soap:Body>
  </soap:Envelope> 

以前有人做过类似的事情吗?

【问题讨论】:

【参考方案1】:

您的 SOAP 操作还应包括方法的命名空间 例如

"http://tempri.org/PutSchedule"

找出你的Service的命名空间是什么,并将它添加到方法名PutSchedule前面。

【讨论】:

您能说得更具体一点吗?我知道这条消息已有 3 年多的历史了,但这就是开设此类论坛的意义所在,对吧?【参考方案2】:

看起来您使用的是 xml-rpc 而不是 soap。 使用http://msdn.microsoft.com/en-us/library/aa192537(office.11).aspx 的soap 类型库或与您的ms office 版本对应的库与Web 服务交互

【讨论】:

以上是关于使用 SOAP 从 VBA 调用 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行调用 SOAP wsdl Web 服务

如何从 Java 类调用 SOAP Web 服务?

使用 telnet 命令调用 SOAP Web 服务

从 C# .NET Core(特别是 Workday)调用 Java Web 服务。如何在soap请求中获取xml属性

从 C++ 调用 web 服务

需要了解PHP中的SOAP 1.2 Web服务数据调用/发送