我用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,请高手指教怎么改?谢谢!

解决方案 »

  1.   

    如果你的java webservice可以修改的话,你最好修改成以xml形式的字符串进行传入参数和获得返回数据
      

  2.   

    to:hongqi162这个热心的高手。
    这样做的话,要在客户端把数据整理成xml,在服务器端解析它。这样,要web service有什么作用,相当于自己做了web service.
      

  3.   

    你把web service理解成什么了?
      

  4.   

    我认为,对象中存在list或数组这样的结构是很正常、很现实的,实际应用中不可避免。
    对于SOAP来说,不应该不支持吧。
    肯定是在delphi里需要做什么配置。我用工具都可以正常传list,为什么delphi做不到呢?
    web service是一个成熟的技术,只是有些细节我们没有搞清楚。
    所以,我想请高手指教,我出现这个问题,是什么没有配置好??
      

  5.   

    上面的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>
      

  6.   

    不知高手仔细看清楚这个SOAP消息体的问题所在了吗??
      

  7.   

    WEB SERVICE 最好把某些对象类的数据转换成 STRING 或者 XML 数据格式!虽然看起来不太好,但是它才是最“底层”最稳定的王道!
      

  8.   

    建议:1,在客户端把数组变成字符串传过去,而后在服务端解析.
       2,在服务端也你说的那个list也变成数组试试.
      

  9.   

    我已经解决了,自己把delphi生成的soap消息改了一下,改成了正确的形式。
    我个人认为:虽然上面各位高手说的办法是可行的,但是,我还是认为,这是在不熟悉webservice相应协议时的折衷办法。但是,我认为协议不是那么难懂的东西,所以在经过一番研究后,自己解决。谢谢大家!
      

  10.   

    你是怎么解决,能给我个例子吗?我的Email:[email protected]