有人知道我如何解决网络服务响应问题吗? 当我从Web服务调用中获取我的soap消息时,我得到此错误“字符串''不是有效的AllXsd值”,只要它是一个值类型,如每个示例的日期时间。
我的代理类是使用wsdl.exe从wsdl生成的,wsdl似乎有效。 我在代理类中没有看到任何错误(生成指定的值,datetime可以为空)。
我已经尝试过netmon看到线上的肥皂信封,但一切看起来都很正常。
你能想到解决这个问题的其他方法吗?或者可能是关于这里发生了什么的线索?
答案 0 :(得分:1)
您是否在网络服务上提供任何文档?您报告在使用日期时遇到此问题,请确认日期格式正确date.ToString("yyyy-MM-dd");
或服务期望的任何内容。
答案 1 :(得分:1)
尝试Web Service Studio并使用该工具点击您的网络服务,看看它是否与您的客户端存在同样的问题。你可以收集一些线索。 Web服务是您的代码吗?如果是,您使用的是asmx还是WCF?你在使用DataContract序列化器或XmlSerializer吗?您是否尝试过重新生成客户端代理?
答案 2 :(得分:1)
好的,我发现了问题所在。
在SOAP中,有两种方法可以使元素为空:
要么缺少整个元素 或者使用参数xsi:nil =“true”且没有值
他们通过使用第一个选项修改消息来修复它。 从那时起,我能够毫无问题地反序列化。
感谢您的回答。
答案 3 :(得分:0)
我的SOAP请求因为xsi:nil="true"
事件而返回BadRequest
修复它的原因是将它添加到SOAP信封的顶部:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
例如:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.blahblahblah.com/myobjectdefinition" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
我不知道为什么SoapUI没有产生这一点,但无论如何它为我修复了它。