WSDL 应该如何构建?
How should WSDL be structured?
由于我是 WSDL、WCF 和 SOAP 的新手,所以我不知道应该如何构建 WSDL。
我现在的问题是,当用户使用他们的用户名//密码登录时,服务器应该使用用户拥有的数据进行响应。假设要发回的数据是:
- 问题ID
- 问题标题
- MatterText
- 物质日期
问题是每个用户可以拥有超过 1 个事项,而我的问题是我不知道如何解析服务器作为响应发送的第一个 事项 .我的 WSDL 结构如下:
输入:
- 用户名
- 密码
输出:
- int MatterID
- str MatterTitle
- str MatterText
- int MatterDate
我做错了吗?我应该用一个包含所有数据的列表来回应吗?或者有没有办法循环响应?
如果您有一个数据数组 return,您最好在 WSDL(类型部分)中定义一个列表,如下所示:
<wsdl:types>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" targetNamespace="http://localhost/SampleService" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<s:complexType name="MatterItemType"> <!-- List Item -->
<s:sequence>
<s:element name="MatterID" type="s:integer" minOccurs="1" maxOccurs="1"/>
<s:element name="MatterTitle" type="s:string" minOccurs="1" maxOccurs="1"/>
<s:element name="MatterText" type="s:string" minOccurs="1" maxOccurs="1"/>
<s:element name="MatterDate" type="s:integer" minOccurs="1" maxOccurs="1"/>
</s:sequence>
</s:complexType>
<s:complexType name="MatterListType"> <!-- List -->
<s:sequence>
<s:element name="MatterItem" type="tns:MatterItemType" minOccurs="0" maxOccurs="unbounded"/>
</s:sequence>
</s:complexType>
<!-- Request and Response -->
<s:element name="SampleRequest">
<s:complexType>
<s:sequence>
<s:element name="username" type="s:string" minOccurs="1" maxOccurs="1"/>
<s:element name="password" type="s:string" minOccurs="1" maxOccurs="1"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SampleResponse">
<s:complexType>
<s:sequence>
<s:element name="MatterList" type="tns:MatterListType" minOccurs="1" maxOccurs="1"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
响应始终包含 MatterList 元素,该元素属于 MatterListType。 MatterListType 包含在 MatterItemType.
中定义的从 0 到 N MatterItem 项
响应的结构如下(不包括 SOAP 信封、名称空间等,仅用于说明结构):
<SampleResponse>
<MatterList>
<MatterItem>
<MatterID>1</MatterID>
<MatterTitle>Title1</MatterTitle>
<MatterText>Text1</MatterText>
<MatterDate>1</MatterDate>
</MatterItem>
<MatterItem>
<MatterID>2</MatterID>
<MatterTitle>Title2</MatterTitle>
<MatterText>Text2</MatterText>
<MatterDate>2</MatterDate>
</MatterItem>
</MatterList>
</SampleResponse>
如果您需要更多帮助,请在评论中告诉我。
由于我是 WSDL、WCF 和 SOAP 的新手,所以我不知道应该如何构建 WSDL。
我现在的问题是,当用户使用他们的用户名//密码登录时,服务器应该使用用户拥有的数据进行响应。假设要发回的数据是:
- 问题ID
- 问题标题
- MatterText
- 物质日期
问题是每个用户可以拥有超过 1 个事项,而我的问题是我不知道如何解析服务器作为响应发送的第一个 事项 .我的 WSDL 结构如下:
输入:
- 用户名
- 密码
输出:
- int MatterID
- str MatterTitle
- str MatterText
- int MatterDate
我做错了吗?我应该用一个包含所有数据的列表来回应吗?或者有没有办法循环响应?
如果您有一个数据数组 return,您最好在 WSDL(类型部分)中定义一个列表,如下所示:
<wsdl:types>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" targetNamespace="http://localhost/SampleService" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<s:complexType name="MatterItemType"> <!-- List Item -->
<s:sequence>
<s:element name="MatterID" type="s:integer" minOccurs="1" maxOccurs="1"/>
<s:element name="MatterTitle" type="s:string" minOccurs="1" maxOccurs="1"/>
<s:element name="MatterText" type="s:string" minOccurs="1" maxOccurs="1"/>
<s:element name="MatterDate" type="s:integer" minOccurs="1" maxOccurs="1"/>
</s:sequence>
</s:complexType>
<s:complexType name="MatterListType"> <!-- List -->
<s:sequence>
<s:element name="MatterItem" type="tns:MatterItemType" minOccurs="0" maxOccurs="unbounded"/>
</s:sequence>
</s:complexType>
<!-- Request and Response -->
<s:element name="SampleRequest">
<s:complexType>
<s:sequence>
<s:element name="username" type="s:string" minOccurs="1" maxOccurs="1"/>
<s:element name="password" type="s:string" minOccurs="1" maxOccurs="1"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="SampleResponse">
<s:complexType>
<s:sequence>
<s:element name="MatterList" type="tns:MatterListType" minOccurs="1" maxOccurs="1"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
响应始终包含 MatterList 元素,该元素属于 MatterListType。 MatterListType 包含在 MatterItemType.
中定义的从 0 到 N MatterItem 项响应的结构如下(不包括 SOAP 信封、名称空间等,仅用于说明结构):
<SampleResponse>
<MatterList>
<MatterItem>
<MatterID>1</MatterID>
<MatterTitle>Title1</MatterTitle>
<MatterText>Text1</MatterText>
<MatterDate>1</MatterDate>
</MatterItem>
<MatterItem>
<MatterID>2</MatterID>
<MatterTitle>Title2</MatterTitle>
<MatterText>Text2</MatterText>
<MatterDate>2</MatterDate>
</MatterItem>
</MatterList>
</SampleResponse>
如果您需要更多帮助,请在评论中告诉我。