用java实现WebService客户端的时候,获取自定义返回值时,报错:
严重: No returnType was specified to the Call object! You must call setReturnType() if you have called addParameter().
五月 14, 2018 2:59:31 下午 org.apache.axis.client.Call invoke
严重: Exception:
org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:145)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at org.apache.axis.client.Call.invoke(Call.java:2467)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.WebServiceClient.doService(WebServiceClient.java:45)
at com.WebServiceClient.main(WebServiceClient.java:52)
这是因为没有给设置序列化操作,导致没有识别自定义类;
在远程访问接口前,设置:GetInfoResult是自定义的实体类
call.registerTypeMapping(
GetInfoResult.class,
new QName(namespace,"GetInfoResult"),
new BeanSerializerFactory(GetInfoResult.class, new QName(namespace, "GetInfoResult")),
new BeanDeserializerFactory(GetInfoResult.class, new QName(namespace, "GetInfoResult")));