【问题标题】:How to consume SOAP Webservice that uses .xsd Schemas as parameters?如何使用使用 .xsd Schema 作为参数的 SOAP Webservice?
【发布时间】:2016-08-01 02:38:25
【问题描述】:

我正在尝试将此 SOAP 与使用 Visual Studio 的 .NET Web 应用程序一起使用。

我的问题是,如果我的wsdl 只描述了两种方法; “processMessage”和“processOCIMessage”。他们期望的消息是一个适合 30 种 xsd 模式之一的字符串,使用 API 的最佳方式是什么?

例如,如果我想获取一些用户信息。我需要写一个适合这个模式的字符串:

<xs:complexType name="UserGetRequest19">
    <xs:annotation>
      <xs:documentation>
        Request to get the user information.  The response is either 
        UserGetResponse19 or ErrorResponse.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="core:OCIRequest">
        <xs:sequence>
          <xs:element name="userId" type="UserId"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType> 

我知道如何传入answer to this question 中描述的简单参数。但是如何使用 Schemas 做到这一点?

Visual Studio 中是否有工具可以将这些转换为用户友好的 C# 类/模型?还是我需要手动输入 XML 字符串,转义特殊字符并将其作为参数传递给 'processMessage'?

【问题讨论】:

    标签: web-services soap xsd wsdl schema


    【解决方案1】:

    首先,使用内置工具从 WSDL 开始添加 Visual Studio Web 引用。这应该创建您的客户端代理和数据传输类;你最终会得到一个具有processMessageReturn 属性的类作为字符串,以及另一个具有processOCIMessageReturn 属性的类,也作为字符串。

    接下来,通过xsd.exe 使用/c 开关运行您感兴趣的XSD 以生成您的类。

    从那里开始,您将需要编写代码来实例化并相应地填充您在第二步中创建的类。使用XmlSerializer 将“top”类序列化为字符串,然后将该字符串分配给第一步中提到的属性。您无需担心将 XML 编码为文本节点,因为框架中内置的 XML 序列化程序会为您处理这些问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多