使用错误的HTTP标头读取SOAP响应

时间:2012-08-13 22:38:03

标签: vb.net wcf http soap wsdl

我正在使用由第三方开发的SOAP接口,但是返回了无效的HTTP标头,如下所示。

HTTP/1.0 200 OK  
Server: SMBDK_1/2.3.0  
Date: Thu, 09 Aug 2012 18:59:14 GMT  
Connection: close  
Content-Length: 670  
Content-Type: text/html; charset=ISO-8859-1  
Content-Type: text/xml  
Expires: Thu, 09 Aug 2012 18:59:14 GMT  
Last-Modified: Thu, 09 Aug 2012 18:59:14 GMT 

请注意,有2个内容类型标记。我正在为这个VB项目使用VS2008。我有这个连接的服务参考,可以发送请求并收到响应。我使用MSDN示例创建了一个CustomTextMessageEncoder来读取text/html; charset=ISO-8859-1的响应。这适用于单个变量返回,但永远不会正确读取数组。他们总是空着的。我正在使用Web调试代理,可以看到SOAP响应中存在数组信息,但它实际上从未实现过。我认为这是由于错误的标题(?)。我尝试将消息解码为text/xml; charset=ISO-8859-1并得到相同的结果......空数组返回。

有没有人对如何处理这种情况有任何建议?我是否需要手动反序列化此消息,还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

最后,这些错误的标题阻止了Visual Studio正确读取数组。
我不得不在内存中的XMl文档中捕获整个响应,然后打开它并使用xmlNodeList手动读取数组中的数据。