如何使用使用.xsd Schema作为参数的SOAP Webservice?

时间:2016-08-01 02:38:26

标签: web-services soap xsd wsdl schema

我尝试使用Visual Studio使用.NET Web应用程序来使用此SOAP。

我的问题是,如果我的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字符串,转义特殊字符并将其作为参数传递给&#39; processMessage&#39;?

1 个答案:

答案 0 :(得分:1)

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

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

从那以后,您将需要编写代码来实例化并填充您在第二步中创建的类。使用XmlSerializer将“top”类序列化为字符串,然后将该字符串分配给第一步中提到的属性。您不必担心将XML编码为文本节点,因为框架内置的XML序列化程序将为您提供相应的帮助。