delphi调用WebService有问题,求救!

jianfengqu 2009-04-25 04:39:21
我用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,请高手指教怎么改?谢谢!
...全文
292 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
laokun 2009-09-15
  • 打赏
  • 举报
回复
你是怎么解决,能给我个例子吗?我的Email:52715265@qq.com
jianfengqu 2009-04-27
  • 打赏
  • 举报
回复
我已经解决了,自己把delphi生成的soap消息改了一下,改成了正确的形式。
我个人认为:虽然上面各位高手说的办法是可行的,但是,我还是认为,这是在不熟悉webservice相应协议时的折衷办法。但是,我认为协议不是那么难懂的东西,所以在经过一番研究后,自己解决。谢谢大家!
chys3584 2009-04-27
  • 打赏
  • 举报
回复
建议:1,在客户端把数组变成字符串传过去,而后在服务端解析.
   2,在服务端也你说的那个list也变成数组试试.
啥都得学呀 2009-04-27
  • 打赏
  • 举报
回复
WEB SERVICE 最好把某些对象类的数据转换成 STRING 或者 XML 数据格式!

虽然看起来不太好,但是它才是最“底层”最稳定的王道!
jianfengqu 2009-04-26
  • 打赏
  • 举报
回复
不知高手仔细看清楚这个SOAP消息体的问题所在了吗??
jianfengqu 2009-04-26
  • 打赏
  • 举报
回复
上面的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>


jianfengqu 2009-04-26
  • 打赏
  • 举报
回复
我认为,对象中存在list或数组这样的结构是很正常、很现实的,实际应用中不可避免。
对于SOAP来说,不应该不支持吧。
肯定是在delphi里需要做什么配置。我用工具都可以正常传list,为什么delphi做不到呢?
web service是一个成熟的技术,只是有些细节我们没有搞清楚。
所以,我想请高手指教,我出现这个问题,是什么没有配置好??
hongqi162 2009-04-26
  • 打赏
  • 举报
回复
你把web service理解成什么了?
jianfengqu 2009-04-26
  • 打赏
  • 举报
回复
to:hongqi162这个热心的高手。
这样做的话,要在客户端把数据整理成xml,在服务器端解析它。这样,要web service有什么作用,相当于自己做了web service.
hongqi162 2009-04-26
  • 打赏
  • 举报
回复
如果你的java webservice可以修改的话,你最好修改成以xml形式的字符串进行传入参数和获得返回数据
lonelyriver 2009-04-26
  • 打赏
  • 举报
回复
帮你顶了
jianfengqu 2009-04-26
  • 打赏
  • 举报
回复
难道没人会吗?
jianfengqu 2009-04-25
  • 打赏
  • 举报
回复
是不是要做一下什么设置才行。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧