我调用一个接口时需要传的参数employees是字符串列表,接口提供方给的参数示例如下: <param name="company" value="abc"/>
<employees>
<param value="zhangsan"/>
</employees>company这个参数我可以传字符串,那employees这个参数我该怎么传呢?传company时我用的rpc.addProperty("company", "abc");
传employees时我用的rpc.addProperty("employees", {"zhangsan"});
最后报错说数据格式不对

解决方案 »

  1.   

    rpc 是个什么类型?看看rpc 是否有 addChild 后 addElement 之类的方法
      

  2.   

    调用接口传参的格式如下,接口提供方要求我向下面一样的格式传参:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.datamanagement.nwom.inspur.com/">
       <soapenv:Header/>
       <soapenv:Body>
          <web:searchDataCommonByConditionForNeTrend>
             <!--Optional:-->
             <xmlCondition><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    <params>
    <param name="company" value="abc"/>
    <param name="address" value="tianjinshi"/>
    <param name="phone" value="123456"/>
    <employees>
    <param value="zhangsan"/>
    </employees>
    <param name="fund" value="123456"/>
    </params>]]></xmlCondition>
          </web:functionname>
       </soapenv:Body>
    </soapenv:Envelope>
      

  3.   

    rpc是SoapObject类型的,只有addAttribute和addProperty
      

  4.   

    你能看到你发送过去的soap消息吗?  贴上来看看
      

  5.   

    我只能看到wsdl文档
      <?xml version="1.0" encoding="UTF-8" ?> 
    - <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.abc.aaa.ccc.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="function" targetNamespace="http://webservice.abc.aaa.ccc.com/">
    - <wsdl:types>
    - <xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://webservice.abc.aaa.ccc.com/">
      <xsd:element name="function" type="tns:function" /> 
    - <xsd:complexType name="function">
    - <xsd:sequence>
      <xsd:element minOccurs="0" name="xmlCondition" type="xsd:string" /> 
      </xsd:sequence>
      </xsd:complexType>
      </wsdl:definitions>
      

  6.   

    你通过wsdl文挡生成了java文件吗?还是直接在编写SOAPMessage 啊
      

  7.   

    我直接自己编写的调接口的代码,就是看不懂那个employees的参数是咋传的?从wsdl文档上能看出来吗?
      

  8.   

    你是如何编写SOAPMessage的啊, 看下你的代码我以前这样写过。看跟你是不是一样的方式
    好像只有SOAPElement对象类型 ,没有找到你说的SOAPObject对象类型。 SOAPMessage msg = MessageFactory.newInstance().createMessage() ;
    SOAPEnvelope env = msg.getSOAPPart().getEnvelope() ;
    SOAPBody body = env.getBody() ; //创建QName指定消息传递中传递数据
    QName ename = new QName(ns, "add", "nn"); //<nn:add xmlns="xxx">
    SOAPBodyElement ele = body.addBodyElement(ename);
    ele.addChildElement("a").setValue("22");
    ele.addChildElement("b").setValue("33");
    msg.writeTo(System.out);