呼叫从VBScript,WScript的,VBA等WCF(.SVC)服务与参数(Call WCF (

2019-10-16 16:38发布

我一直在试图实施以前贴在下面的问题中提供的exmaples:

通过调用WCF的VBScript服务

在我的具体情况我需要一个字符串变量,它会返回一个字符串,但有一点运气的数组来传递。

我怀疑我在一个艰难的时间越来越信封的要求是正确的。 下面是我想打电话给WDSL。 你能给我的,我怎么能调用这个传递的参数和解析返回数组的例子吗?

  <?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>

Answer 1:

这WSDL文档不包含架构(所有<wsdl:import>为操作的输入/输出语句),所以这是不可能告诉请求应该是什么样子仅根据这一信息。

但有一两件事可以做:打开WCFTestClient.exe,它指向正在运行的服务,那么的WSDL - 在运行的工具,如提琴手 -向服务发送的请求。 这样,你就可以看到正在进行的请求和服务响应。 在这一点上,将复制请求(包括的东西,如HTTP报头SOAPAction ,如果适用的话),并且请求主体。



文章来源: Call WCF (.svc) service from VBScript, WScript, VBA, etc with parameters