我正在访问用PHP编写的第三方Web服务。 服务wsdl在我的项目中作为Web引用添加,并且大部分时间都可以正常工作。
现在我经常遇到的问题如下:
wsdl中的参数定义了它们的类型(string,bool,int),但它们没有设置nillable属性。现在经常int或bool作为响应中的空元素返回,这会引发转换错误:
[FormatException: Input string was not in a correct format.]
System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +9594283
System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +119
System.Xml.XmlConvert.ToInt32(String s) +43
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReadernutritionService.Read6_NullableOfInt32(Boolean checkType) +125
我现在要解决的问题是将所有参数类型更改为字符串,因此它们不会在空元素上抛出错误。我根本不喜欢这个解决方案,所以我想知道我是否可以以某种方式覆盖它,以便当元素为空时,我可以简单地为int填充0,为bool填充false。
有什么建议吗?
答案 0 :(得分:0)
最简单的解决方案是创建WSDL的本地副本,进行必要的更改然后调用它。您可以尝试动画并编写动态执行此操作的脚本,但您可能会遇到比其价值更多的麻烦。