首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA MSSOAP.SoapClient30错误:为SOAP请求HRESULT=0x80070057提供的参数数不正确

VBA MSSOAP.SoapClient30错误:为SOAP请求HRESULT=0x80070057提供的参数数不正确
EN

Stack Overflow用户
提问于 2013-04-17 14:05:54
回答 1查看 7.4K关注 0票数 1

update:所以我想我需要以某种方式在方法参数上提交一个复杂的类型--我如何使用VBA来完成这个任务呢?

这是我第一次编写VBA代码,对于如何解决这个问题,我将感激任何可能的提示。基本上,我编写了一个小小的soap服务,它运行得很好--我用SoapUI测试它--所以我想其他应用程序应该能够使用它。

服务生成的WSDL就在这里。。或许,这对VBScript SOAPClient的消费并不太友好--在这个方向上的任何一点都会有很大帮助。

我试图把一些实际使用它的代码放在一起(下面是VBScript)--我是在谷歌搜索时找到的一个例子的基础上构建的。它会产生以下错误:

代码语言:javascript
运行
复制
Incorrect number of parameters supplied for SOAP request HRESULT=0x80070057

Module Module1

    Dim WSDLFileName As String
    Dim base64attachment As String
    Dim attachment_filename As String
    Dim summary As String
    Dim SoapClient
    Dim res

    Sub Main()
        WSDLFileName = "http://localhost:7777/?wsdl"
        base64attachment = "UG9ydG1hbiBpcyBwb3J0Zm9saW8gbWFuYWdlbWVudCBzb2Z0d2FyZSB0byBoZWxwIFBNTyBrZWV"
        attachment_filename = "test_file.txt"
        summary = "test issue with summary"
        SoapClient = CreateObject("MSSOAP.SoapClient30")
        SoapClient.MSSoapInit(WSDLFileName)
        res = SoapClient.CreateJiraIssueWithBase64Attachment(summary, base64attachment, attachment_filename)
        Console.Out.WriteLine(res)
    End Sub

End Module

任何指点都会有帮助,我在这里迷路了。

我希望它能产生这样的反应:

代码语言:javascript
运行
复制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:open="open.JiraAdapter">
   <soapenv:Header/>
   <soapenv:Body>
      <open:CreateJiraIssueWithBase64Attachment>
         <open:summary>some summary</open:summary>
         <open:base64attachment>BASE64CODEDFILE</open:base64attachment>
         <open:attachment_filename>NAME of the file attached</open:attachment_filename>
      </open:CreateJiraIssueWithBase64Attachment>
   </soapenv:Body>
</soapenv:Envelope>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-04 12:35:12

服务响应包含复杂类型的对象。

代码语言:javascript
运行
复制
<xs:element name="CreateJiraIssueWithBase64AttachmentResult" type="s0:Status" minOccurs="0" nillable="true"/>

要能够使用复杂类型,您需要使用"MSSOAP.SoapSerializer30“来创建请求,使用"MSSOAP.SoapReader30”来读取响应。

SOAP可以帮助您查看正确的请求结构(标记、命名空间和操作)。我想大概是这样

代码语言:javascript
运行
复制
Connector = CreateObject("MSSOAP.HttpConnector30") 
Connector.Property("EndPointURL") = "url"
Connector.Property("UseSSL") = True
Connector.Connect
Connector.Property("SoapAction") = "CreateJiraIssueWithBase64Attachment"
Connector.BeginMessage

Serializer = CreateObject("MSSOAP.SoapSerializer30")
Serializer.Init(Connector.InputStream)
Serializer.StartEnvelope
Serializer.StartBody
Serializer.StartElement("CreateJiraIssueWithBase64Attachment";"open.jiraAdapter.test")
Serializer.StartElement("summary";"open.jiraAdapter.test")
Serializer.WriteString("another test issue for JUR")
Serializer.EndElement
Serializer.StartElement("base64attachment";"open.jiraAdapter.test")
Serializer.WriteString("Y29kZTogaHR0cDovL3Bhc3RlYmluLmNvbS9EbUx3N0oycQ0KeG1sOiBodHRwOi8vcGFzdGViaW4uY29tLzE3Q2MxVjJM")
Serializer.EndElement 
Serializer.StartElement("attachment_filename";"open.jiraAdapter.test")
Serializer.WriteString("readme.txt")
Serializer.EndElement   
Serializer.EndElement   
Serializer.EndBody
Serializer.EndEnvelope    
Connector.EndMessage

Reader = CreateObject("MSSOAP.SoapReader30")
Reader.Load(Connector.OutputStream)  
/// Reader.Body.xml - response

希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16062267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档