Call WCF (.svc) service from VBScript, WScript, VBA, etc with parameters

笑着哭i 提交于 2020-01-05 04:48:28

问题


I've been trying to implement the exmaples provided in the question posted previously below:

Calling WCF service by VBScript

In my specific scenario I need to pass in a single string variable which will return an array of strings but having little luck.

I suspect I'm having a tough time getting the envelope request correct. Below is the wdsl that I'm trying to call. Can you give me an example of how i can call this passing in the parameter and parsing the return array?

  <?xml version="1.0" encoding="utf-8" ?> 
 <wsdl:definitions name="TestSvc" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata">
 <wsdl:types>
 <xsd:schema targetNamespace="http://tempuri.org/Imports">
  <xsd:import schemaLocation="http://localHost/testSvc.svc?xsd=xsd0" namespace="http://tempuri.org/" /> 
  <xsd:import schemaLocation="http://localHost/testSvc.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
  <xsd:import schemaLocation="http://localHost/testSvc.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /> 
  </xsd:schema>
  </wsdl:types>
 <wsdl:message name="ITestSvc_GetDataBy_Id_InputMessage">
 <wsdl:part name="parameters" element="tns:GetDataBy_Id" /> 
 </wsdl:message>
 <wsdl:message name="ITestSvc_GetDataBy_Id_OutputMessage">
  <wsdl:part name="parameters" element="tns:GetDataBy_IdResponse" /> 
  </wsdl:message>
 <wsdl:portType name="ITestSvc">
 <wsdl:operation name="GetDataBy_Id">
  <wsdl:input wsaw:Action="http://tempuri.org/ITestSvc/GetDataBy_Id" message="tns:ITestSvc_GetDataBy_Id_InputMessage" /> 
  <wsdl:output wsaw:Action="http://tempuri.org/ITestSvc/GetDataBy_IdResponse" message="tns:ITestSvc_GetDataBy_Id_OutputMessage" /> 
  </wsdl:operation>
 <wsdl:binding name="BasicHttpBinding_TestSvc" type="tns:ITestSvc">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
 <wsdl:operation name="GetDataBy_Id">
  <soap:operation soapAction="http://tempuri.org/ITestSvc/GetDataBy_Id" style="document" /> 
 <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
 <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
 <wsdl:service name="TestSvc">
 <wsdl:port name="BasicHttpBinding_ITestSvc" binding="tns:BasicHttpBinding_ITestSvc">
  <soap:address location="http://localhost/TestSvc.svc" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>

回答1:


This WSDL document doesn't contain the schema (all the <wsdl:import> statements) for the input / output of the operations, so it's impossible to tell what the request should look like based on this information alone.

But one thing you can do: open WCFTestClient.exe, point it to the WSDL of the running service, then - while running a tool such as Fiddler - send a request to the service. This way you'll be able to see the request going on, and the service response. At that point, replicate the request (including things such as the HTTP header SOAPAction, if applicable), and the request body.



来源:https://stackoverflow.com/questions/10455075/call-wcf-svc-service-from-vbscript-wscript-vba-etc-with-parameters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!