wsdl规范:
http://www.w3.org/TR/2004/WD-wsdl20-primer-20041221/
下面是1.1和2.0的wsdl,webmethod是:
.net1.1生成的wsdl:
.net2.0生成的wsdl:
感谢shenloqi,你说的是对的,我这种方法虽然也可以解决,但是确破坏了delphi对webservice的封装(因为要修改wsdl)。问题的原因是:
.net默认使用的是document,delphi默认是rpc,delphi调用.net1.1不出现问题是因为,.net1.1在wsdl中会加上style=“document”,.net2.0去掉了style属性而采用默认值,虽然soap默认值也是document,可是delphi把没有style属性的当作做rpc封装。不一致发生了,错误也随之产生。
如果在 .net用到了Nullable(如int?),delphi还是不能解析,但是如果在数组中有null元素,即使会生成xsi:nil="true",delphi也可以解析。