有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Axis 1.4 SimpleDeserializer在试图反序列化的内容中遇到了一个子元素,这不是预期的

我想使用axis 1.4调用soap web服务来生成源代码: 响应格式为字符串,请求格式为以字符串格式发送的xml: 遇到的错误如下:

Exception in thread "main" AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
 faultActor: 
 faultNode: 
 faultDetail: 
    {http://xml.apache.org/axis/}stackTrace: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.socgen.interrogationfde.infogreffe.generated.WebServicesProduitsBindingStub.getProduitsWebServicesXML(WebServicesProduitsBindingStub.java:146)
    at com.socgen.interrogationfde.infogreffe.services.InfogreffeService.main(InfogreffeService.java:61)

    {http://xml.apache.org/axis/}hostname:FR07166945L

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
    at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
    at org.apache.axis.client.Call.invoke(Call.java:2470)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at com.socgen.interrogationfde.infogreffe.generated.WebServicesProduitsBindingStub.getProduitsWebServicesXML(WebServicesProduitsBindingStub.java:146)
    at com.socgen.interrogationfde.infogreffe.services.InfogreffeService.main(InfogreffeService.java:61)
Caused by: 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.RPCE`enter code here`lement.getParams(RPCElement.java:384)
    at org.apache.axis.client.Call.invoke(Call.java:2467)
    ... 4 more

Process finished with exit code 1

共 (1) 个答案

  1. # 1 楼答案

    通过使用spring boot中的RestTemplate并直接调用soap web服务的URL,我解决了这个问题

        RestTemplate restTemplate = new RestTemplate ();
        String fooResourceUrl`enter code here`
           = "http: // localhost: 8080 / spring-rest / foos";
        ResponseEntity <String> response
           = restTemplate.getForEntity (fooResourceUrl + "/ 1", String.class);
        assertThat (response.getStatusCode (), equalTo (HttpStatus.OK));