IntelliJ IDEA调用webservice出现异常org.xml.sax.SAXException

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.

客户端代码:

package test;


import example.HelloWorld;
import org.apache.axis.client.Service;
import org.apache.axis.utils.StringUtils;

import org.apache.axis.client.Call;

public class Client {

    public static void main(String[] args) {
        // 指定调用WebService的URL(这里是我们发布后点击HelloWorld)
        String url = "http://localhost:8080/WebService1_war_exploded/services/HelloWorld?wsdl";
        //调用的方法
        String method = "add";
        //调用方法的参数列表
        Object[] parms = new Object[]{2.0,3.0};
        Client calculateClient = new Client();
        //调用方法
        String svrAddResult = calculateClient.CallMethod(url, method, parms);

        System.out.println(svrAddResult);

        String svrMinusResult = calculateClient.CallMethod(url, "minus", new Object[]{5.0,2.0});
        String svrMultiplyResult = calculateClient.CallMethod(url, "multiply", new Object[]{2.0,3.0});
        String svrDivideResult = calculateClient.CallMethod(url, "divide", new Object[]{8.0,5.0});
        String svrPowerResult = calculateClient.CallMethod(url, "power", new Object[]{5.0});
        String svrSqrtResult = calculateClient.CallMethod(url, "sqrt", new Object[]{9.0});

        System.out.println("5.0 - 2.0 is " + svrMinusResult);
        System.out.println("2.0 * 3.0 is " + svrMultiplyResult);
        System.out.println("8.0 - 5.0 is " + svrDivideResult);
        System.out.println("5.0^2 is " + svrPowerResult);
        System.out.println("9.0^(1/2) is " + svrSqrtResult);
    }

    //实现WebService上发布的服务调用
    public String CallMethod(String url, String method, Object[] args) {
        String result = null;

        if(StringUtils.isEmpty(url)) {
            return "url地址为空";
        }
        if(StringUtils.isEmpty(method)) {
            return "method地址为空";
        }

        Call rpcCall = null;

        try {
            //实例websevice调用实例
            Service webService = new Service();
            rpcCall = (Call) webService.createCall();
            rpcCall.setTargetEndpointAddress(new java.net.URL(url));
            rpcCall.setOperationName(method);

            //执行webservice方法

            double rslt = (double) rpcCall.invoke(args);
            result = String.valueOf(rslt);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;

    }

}

编写的服务是实现两个数之间基本运算的服务,能够通过Tomcat成功发布,但是调用的时候报错,以下是报错信息:

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
	at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
	at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
	at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:610)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1718)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2883)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
	at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324)
	at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
	at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796)
	at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
	at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
	at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
	at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at test.Client.CallMethod(Client.java:60)
	at test.Client.main(Client.java:28)
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/}hostname:DESKTOP-05C2Q8J

查阅了网上的方法,将server-config.wsdd里面的的style和use的内容删除了,还是有这个异常,打印出来的结果如下:

5.0 - 2.0 is null
2.0 * 3.0 is null
8.0 - 5.0 is null
5.0^2 is null
9.0^(1/2) is null

本来的结果应该是调用服务计算相应的运算,但是现在的结果都是null.

有没有大神帮忙解决,试了网上的办法都不太行。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
IntelliJ IDEA是一款集成开发环境,其具有出色的功能和可定制性,使得它成为软件开发的首选工具。IntelliJ IDEA具有许多强大的快捷键,使得开发人员可以更有效地进行编码和调试。而intellijidea快捷键(中文版).pdf就是一份列举了IntelliJ IDEA的快捷键的指南,这里我们就来探究一下这份指南的特点和使用方法。 首先,这份指南非常详细和全面,几乎列举了IntelliJ IDEA的所有快捷键,而且还有中文翻译,简单易懂。其次,这份指南按照功能分类,让人很容易就能找到所需的快捷键,比如代码编辑、导航和搜索、运行和调试等等。此外,这份指南还提供了常见用例的快捷键。例如,在进行代码编辑时,您可能需要添加行或向上或向下移动行,这份指南会告诉您要使用哪些快捷键来完成这些操作。另外,这份指南还包含了其他IDEA功能的快捷键,如版本控制、重构以及代码生成等。 要使用intellijidea快捷键(中文版).pdf,您只需要下载并打印出来,然后放在您的工作区域旁边,使得可以随时查看。此外,您还可以将其保存在电脑或手机上,这样,在没有打印出来的情况下,您也可以随时查看。 总之,intellijidea快捷键(中文版).pdf是一份非常实用和全面的快捷键指南,IntelliJ IDEA的使用者应该都会从中受益。通过学习它所列举的快捷键,开发者将更加高效地进行编码和调试工作,从而更快地完成任务,并在开发的过程中更具乐趣。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值