将SOAP响应反序列化为生成的类C#

时间:2016-10-27 12:03:30

标签: java c# web-services soap deserialization

我们正在与第三方集成,并且无法反序列化我们从请求中获得的响应。从提琴手,我可以看到回应:

>=

但我们无法将其正确反序列化为updateItemsResponse对象。创建了该对象,但fileId和fileName都为null。 我们为此请求和响应生成了类,下面是生成的类:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>
  <ns2:updateItemsResponse xmlns:ns2="http://ThirdParty/dmn/items/1.1">
     <fileId>bd6e7d83-8bfu-4573-fe32-c67c04355dd0</fileId>
     <fileName>12345.MBG_Items.002.2016-10-26-16-23-35.xml</fileName>
  </ns2:updateItemsResponse>

我们知道Web服务是用Java编写的,我们在生成类文件时遇到了一些问题 - 在我们能够使用svcutil.exe创建类文件之前,我们提供的wsdl需要一些jiggery pokery。所以我认为我需要在生成的文件中进行一些调整。

我已经做了一些搜索,我猜这里的问题是命名空间,但我不能让它工作。我尝试更改命名空间,删除命名空间,更改fileId和fileName的顺序 - 但这些都没有任何区别。

任何能够看到任何明显我可能会失踪的人?它让我发疯了!!!

编辑:尝试过将fileId和fileName更改为XmlElement,但仍然得到空响应。

1 个答案:

答案 0 :(得分:2)

尤里卡!!!

因此,在fileId和fileName上存在错误的属性。只需将它们改为

[System.ServiceModel.MessageBodyMemberAttribute(Name = "fileId", Namespace = "", Order = 0)]
    public string fileId;

    [System.ServiceModel.MessageBodyMemberAttribute(Name = "fileName", Namespace = "", Order = 1)]
    public string fileName;

我现在可以反复排序。