我即将在我的应用程序中集成第三方SOAP服务。我无法控制这项服务,我只是得到了一些.xsd文件,一个wsdl文件和一些示例响应。我使用默认方式在Visual Studio中生成代理客户端。我已经将相同的wsdl添加到Soap UI以及响应xml中。
问题是当我在我的应用程序中收到响应时,某些值为null。通过向服务客户端添加一个实现IEndpointBehavior and IClientMessageInspector
的类,我可以在方法AfterReceiveReply
中看到预期的xml响应。代理对象中的某些值为null。
检查服务定义中的对象,我可以看到类型上标记了Order
属性。例如:
[System.Xml.Serialization.XmlElementAttribute(Order=1)]
public string name { .......
我的第一个想法是响应xml不包含所有期望元素,并且按照.xsd文件中描述的正确顺序。
查看相关的.xsd文件,元素定义如下:
<xs:element name="name" type="MyTypeHere" minOccurs="0">
<xs:annotation>
<xs:documentation>Some documentation</xs:documentation>
</xs:annotation>
</xs:element>
标记为
时,响应中是否需要此元素minOccurs="0"
或者该值仅为null?由于显而易见的原因,我不能在这里发布wsdl或.xsd文件..
提前致谢。
答案 0 :(得分:0)
不要担心空值。只要他们填写了你需要的价值,你就可以去。
有时他们想要对所有类型的请求做出一种响应。他们倾向于添加其他请求类型不需要的字段。