Web services 来自VBScript的Webservice调用

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

我正在尝试从VBS调用webservice。我在“objSOAP.sSOAPRequest=”行中遇到错误“Type mismatch”。我尝试删除它的存档标记内的输入。然后这个错误就不会出现了。encodeBase64和fieldvalue2(分别位于存档和文件夹标记内的soap xml)是另一个vbs代码的输出,其中zip文件被转换为base64值(其巨大值).fieldvalue2是一个小字符串

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
有效,并带有空格。