Web services 来自VBScript的Webservice调用
我正在尝试从VBS调用webservice。我在“objSOAP.sSOAPRequest=”行中遇到错误“Type mismatch”。我尝试删除它的存档标记内的输入。然后这个错误就不会出现了。encodeBase64和fieldvalue2(分别位于存档和文件夹标记内的soap xml)是另一个vbs代码的输出,其中zip文件被转换为base64值(其巨大值).fieldvalue2是一个小字符串Web services 来自VBScript的Webservice调用,web-services,soap,vbscript,Web Services,Soap,Vbscript,我正在尝试从VBS调用webservice。我在“objSOAP.sSOAPRequest=”行中遇到错误“Type mismatch”。我尝试删除它的存档标记内的输入。然后这个错误就不会出现了。encodeBase64和fieldvalue2(分别位于存档和文件夹标记内的soap xml)是另一个vbs代码的输出,其中zip文件被转换为base64值(其巨大值).fieldvalue2是一个小字符串 Class ServiceRequest Private oWinHttp,sConten
Class ServiceRequest
Private oWinHttp,sContentType
Public sWebServiceURL, sSOAPRequest,sResponse,servicename,sHost
Private Sub Class_Initialize
Set oWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
'Web Service Content Type
sContentType ="text/xml;charset=UTF-8"
End Sub
Public Function SetSoapAction(servicename)
sWebServiceURL = "http://s05ast0026- c05.nl.eu.abnamro.com:12726/EngageOneWS/TemplateService"
End Function
Public Function SendRequest
sHost="pb.com"
'Open HTTP connection
oWinHttp.Open "POST", sWebServiceURL, False
'Setting request headers
oWinHttp.setRequestHeader "Content-Type", sContentType
'Send SOAP request
oWinHttp.Send sSOAPRequest
'Get XML Response
sResponse = oWinHttp.ResponseText
End Function
Public Function Close
Set oWinHttp = Nothing
End Function
End Class
Set objSOAP = New ServiceRequest
objSOAP.SetSoapAction("Bananas") ---- > simply passing can be avoided
objSOAP.sSOAPRequest="<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tem=""http://pb.com/EngageOne/ws/template"" xmlns:com=""http://pb.com/EngageOne/ws/common""><soapenv:Header/><soapenv:Body><tem:ImportTemplate><com:authContext><com:UsernameToken> <com:domain><com:ident><com:name>EngageOne</com:name></com:ident></com:domain><com:userId>s03217</com:userId><com:transientSession>false</com:transientSession><com:ondemand>false</com:ondemand></com:UsernameToken></com:authContext><com:context><com:domain><com:ident><com:name>EngageOne</com:name></com:ident></com:domain><com:user><com:id>s03217</com:id></com:user></com:context><archive>"&encodeBase64&"</archive><folder><ident><com:id></com:id><com:name>"& fieldvalue2 &"</com:name></ident></folder><effectiveDate>?</effectiveDate><withdrawnDate>?</withdrawnDate></tem:ImportTemplate></soapenv:Body></soapenv:Envelope>"
objSOAP.SendRequest
sResponse = objSOAP.sResponse
msgBox(sResponse)
类服务请求
私有oWinHttp,sContentType
公共SwebService URL、SSOARequest、sResponse、servicename、sHost
私有子类_初始化
设置oWinHttp=CreateObject(“WinHttp.WinHttpRequest.5.1”)
'Web服务内容类型
sContentType=“text/xml;字符集=UTF-8“
端接头
公共函数集合封装(servicename)
SwebService URL=”http://s05ast0026- c05.nl.eu.abnamro.com:12726/EngageOneWS/TemplateService“
端函数
公共函数发送请求
sHost=“pb.com”
'打开HTTP连接
oWinHttp.Open“POST”,sWebServiceURL,False
'设置请求头
oWinHttp.setRequestHeader“内容类型”,sContentType
'发送SOAP请求
oWinHttp。发送sSOAPRequest
'获取XML响应
sResponse=oWinHttp.ResponseText
端函数
公共功能关闭
设置oWinHttp=Nothing
端函数
末级
Set objSOAP=newservicerequest
objSOAP.SetSoapAction(“香蕉”)----->可以避免简单的传递
objSOAP.sSOAPRequest=“EngageOnes03217falsefalseEngageOnes03217”&encodeBase64&&fieldvalue2&&
objSOAP.SendRequest
sResponse=objSOAP.sResponse
msgBox(响应)
您的代码中是否故意省略了变量encodeBase64
和fieldvalue2
,或者这些变量是您尚未填充的代码中使用的空变量?另外,您的SetSoapAction()
不应设置为banana
,这只是technet文章中使用的示例,您从中获取此类文件。这应该是存储Web服务名称的位置。我知道。我没有使用任何传递的内容,因为我尝试了选项。encodeBase64&fieldvalue2已填充。我怀疑URL是否存在在swebservice中,URL
有效,并带有空格。