我用java做了个webservice。有一个方法中传入的对象中有一个list属性,
这是用wsdl importer导入后生成的我的对象:Student = class(TRemotable)
private
//省略
published
property id: WideString Index (IS_OPTN or IS_UNQL) read Getid write Setid stored id_Specified;
property name: WideString Index (IS_OPTN or IS_UNQL) read Getname write Setname stored name_Specified;
//这个属性在java中是list,delphi把它用动态数组处理
property parentsList: Array_Of_Parent Index (IS_OPTN or IS_UNBD or IS_NLBL or IS_UNQL) read GetparentList write SetparentList stored parentList_Specified;
end;执行调用时,id、name能传过去,而parentsList传不过去。我用工具看了一下传过去的xml,其中一段内容是这样的:
<id xsi:type="xsd:string">id</id>
<name xsi:type="xsd:string">Temprere</name>
<item xsi:type="NS2:Parent">
<id xsi:type="xsd:string">1</id>
<extend1 xsi:type="xsd:string">extend1</extend1>
</item>
<item xsi:type="NS2:Parent">
<id xsi:type="xsd:string">1</id>
<extend1 xsi:type="xsd:string">extend1</extend1>
</item>
可以看出来,这两个item 本应该为parentList,不知道delphi怎么把它弄成了item,请高手指教怎么改?谢谢!
这是用wsdl importer导入后生成的我的对象:Student = class(TRemotable)
private
//省略
published
property id: WideString Index (IS_OPTN or IS_UNQL) read Getid write Setid stored id_Specified;
property name: WideString Index (IS_OPTN or IS_UNQL) read Getname write Setname stored name_Specified;
//这个属性在java中是list,delphi把它用动态数组处理
property parentsList: Array_Of_Parent Index (IS_OPTN or IS_UNBD or IS_NLBL or IS_UNQL) read GetparentList write SetparentList stored parentList_Specified;
end;执行调用时,id、name能传过去,而parentsList传不过去。我用工具看了一下传过去的xml,其中一段内容是这样的:
<id xsi:type="xsd:string">id</id>
<name xsi:type="xsd:string">Temprere</name>
<item xsi:type="NS2:Parent">
<id xsi:type="xsd:string">1</id>
<extend1 xsi:type="xsd:string">extend1</extend1>
</item>
<item xsi:type="NS2:Parent">
<id xsi:type="xsd:string">1</id>
<extend1 xsi:type="xsd:string">extend1</extend1>
</item>
可以看出来,这两个item 本应该为parentList,不知道delphi怎么把它弄成了item,请高手指教怎么改?谢谢!
这样做的话,要在客户端把数据整理成xml,在服务器端解析它。这样,要web service有什么作用,相当于自己做了web service.
对于SOAP来说,不应该不支持吧。
肯定是在delphi里需要做什么配置。我用工具都可以正常传list,为什么delphi做不到呢?
web service是一个成熟的技术,只是有些细节我们没有搞清楚。
所以,我想请高手指教,我出现这个问题,是什么没有配置好??
<name xsi:type="xsd:string">Temprere </name>
<item xsi:type="NS2:Parent">
<id xsi:type="xsd:string">1 </id>
<extend1 xsi:type="xsd:string">extend1 </extend1>
</item>
<item xsi:type="NS2:Parent">
<id xsi:type="xsd:string">1 </id>
<extend1 xsi:type="xsd:string">extend1 </extend1>
</item>
2,在服务端也你说的那个list也变成数组试试.
我个人认为:虽然上面各位高手说的办法是可行的,但是,我还是认为,这是在不熟悉webservice相应协议时的折衷办法。但是,我认为协议不是那么难懂的东西,所以在经过一番研究后,自己解决。谢谢大家!