在Delphi 7中调用Java写的WebService,在参数传输上出现了一些问题:
1.Delphi中如何给WebService方法参数赋Null值,包括WideStrng、Integer、Boolean、ArrayOfString及ArrayOfArrayOfString等所有的数据类型。原因是服务端Java代码中所有对参数值的判断都采取如下的方式判断:
if (var == null) {
...
}
这样D中传过去的参数如字符串则是值为""的字符串,数据ArrayOfString及ArrayOfArrayOfString都是长度为0的数组。服务端不会为客户端修改代码,即使会也太多地方要改了:(。2.WebService中的数组类型ArrayOfString(array of string)及ArrayOfArrayOfString(array of ArrayOfString),在D中ArrayOfString可以正确传递参数,而ArrayOfArrayOfString一直无法正确传递。如D中数组为:
(('1', '2', '3'), ('4', '5', '6'), ('7', '8', '9'))
生成的Soap请求为:
<in2>
<ArrayOfString xmlns="" xsi:nil="true"/>
<ArrayOfString xmlns="" xsi:nil="true"/>
<ArrayOfString xmlns="" xsi:nil="true"/>
<ArrayOfString xmlns="" xsi:nil="true"/>
<ArrayOfString xmlns="" xsi:nil="true"/>
<ArrayOfString xmlns="" xsi:nil="true"/>
<ArrayOfString xmlns="" xsi:nil="true"/>
<ArrayOfString xmlns="" xsi:nil="true"/>
<ArrayOfString xmlns="" xsi:nil="true"/>
</in2>
不知道如何才能正确赋值