用axis2写的一个复合数据调用,客户端发出请求(SmsSendResult对象,包含3个属性),服务端用RPC方式接收不到数据,用Stub方式却没问题,代码如下客户端:// 使用RPC 方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions(); // 指定调用WebService 的URL
EndpointReference targetEPR = new EndpointReference("http://192.168.1.138:8888//service/ISendCallHistory");
options.setTo(targetEPR); // 指定要调用的sendSmsSendResult 方法及WSDL 文件的命名空间
QName opAddEntry = new QName("http://service.cmscs.com", "sendSmsSendResult"); SmsSendResult smsSendResult = new SmsSendResult();
smsSendResult.setHookSmsSendResult(1);
smsSendResult.setMissedSmsSendReslt(2);
smsSendResult.setRcId(1);

ReturnMessage returnMessage=(ReturnMessage) serviceClient.invokeBlocking(opAddEntry,
new Object[]{smsSendResult},
new Class[]{ReturnMessage.class})[0];

 System.out.println(returnMessage.getOperTime());
 System.out.println(returnMessage.getRcId());
 System.out.println(returnMessage.getReason());
 System.out.println(returnMessage.getResult());
 
System.exit(0);
服务端WSDL:
<wsdl:definitions targetNamespace="http://service.cmscs.com">
<wsdl:types>
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://callhistory.bean.service.cmscs.com">
<xsd:complexType name="SmsSendResult">
<xsd:sequence>
<xsd:element minOccurs="0" name="hookSmsSendResult" type="xsd:int"/>
<xsd:element minOccurs="0" name="missedSmsSendReslt" type="xsd:int"/>
<xsd:element minOccurs="0" name="rcId" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="IvrCallReord">
<xsd:sequence>
<xsd:element minOccurs="0" name="callLong" type="xsd:long"/>
<xsd:element minOccurs="0" name="callRecorder" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="rcId" type="xsd:long"/>
<xsd:element minOccurs="0" name="result" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.cmscs.com">
<xsd:element name="sendSmsSendResult">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="ns1:SmsSendResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sendSmsSendResultResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="ns2:ReturnMessage"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sendIvrCallRecord">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="ns1:IvrCallReord"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sendIvrCallRecordResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="ns2:ReturnMessage"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://returntype.bean.service.cmscs.com">
<xsd:complexType name="ReturnMessage">
<xsd:sequence>
<xsd:element minOccurs="0" name="operTime" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="rcId" type="xsd:long"/>
<xsd:element minOccurs="0" name="reason" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="result" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="sendIvrCallRecordRequest">
<wsdl:part name="parameters" element="tns:sendIvrCallRecord"> </wsdl:part>
</wsdl:message>
<wsdl:message name="sendSmsSendResultResponse">
<wsdl:part name="parameters" element="tns:sendSmsSendResultResponse"> </wsdl:part>
</wsdl:message>
<wsdl:message name="sendIvrCallRecordResponse">
<wsdl:part name="parameters" element="tns:sendIvrCallRecordResponse"> </wsdl:part>
</wsdl:message>
<wsdl:message name="sendSmsSendResultRequest">
<wsdl:part name="parameters" element="tns:sendSmsSendResult"> </wsdl:part>
</wsdl:message>
<wsdl:portType name="ISendCallHistoryPortType">
<wsdl:operation name="sendSmsSendResult">
<wsdl:input name="sendSmsSendResultRequest" message="tns:sendSmsSendResultRequest"> </wsdl:input>
<wsdl:output name="sendSmsSendResultResponse" message="tns:sendSmsSendResultResponse"> </wsdl:output>
</wsdl:operation>
<wsdl:operation name="sendIvrCallRecord">
<wsdl:input name="sendIvrCallRecordRequest" message="tns:sendIvrCallRecordRequest"> </wsdl:input>
<wsdl:output name="sendIvrCallRecordResponse" message="tns:sendIvrCallRecordResponse"> </wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ISendCallHistoryHttpBinding" type="tns:ISendCallHistoryPortType">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="sendSmsSendResult">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="sendSmsSendResultRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sendSmsSendResultResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sendIvrCallRecord">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="sendIvrCallRecordRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sendIvrCallRecordResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ISendCallHistory">
<wsdl:port name="ISendCallHistoryHttpPort" binding="tns:ISendCallHistoryHttpBinding">
<wsdlsoap:address location="http://192.168.1.138:81//service/ISendCallHistory"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>