调用Axis WebService异常:org.xml.sax.SAXException: Bad envelope tag: definitions

用Eclipse直接创建的webservice客户端,调用webservice:

 

String endpoint = "XXXService?wsdl";
XXXServiceProxy proxy = new XXXServiceProxy(endpoint);
try{
    String result = proxy.request();
    System.out.println(result);
}catch(RemoteException e){
    e.printStackTrace();      
}

 

调用webservice出现异常:

 

Caused by: org.xml.sax.SAXException: Bad envelope tag:  definitions

at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)

at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)

at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)

at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)

... 12 more

 

在网上找到解决办法:

String endpoind = "XXXService?wsdl";

创建endpoint的时候不能加上?wsdl,改为:

String endpoint = "XXXService";

这个错误信息是在使用Apache Axis(一个Java库,用于创建Web服务和客户端)时遇到的问题。错误的具体含义是:由于一个`org.apache.axis.AxisFault`异常,系统试图将一个字符串类型的值强制转换为`java.lang.Long`类型,但这是不允许的,因为`String`并不是`Long`类型的子类或可以自动转换的类型。 - `org.apache.axis.AxisFault`:表示在Axis框架中发生了错误,可能是由于网络问题、请求处理错误或者是与服务端接口不匹配导致的。 - `java.lang.ClassCastException`:这是一个运行时异常,它发生在试图将一个对象从一个类转换到另一个类,但它们实际上是不兼容的类型时。 - `java.lang.String cannot be cast to java.lang.Long`:这句话直译就是“无法将字符串转换为长整型”。 可能的原因包括: 1. 在服务端,预期接收的是long类型的参数,但在发送请求时误传了字符串。 2. 代码中有一个地方尝试将从API返回的响应解析为long,但实际响应可能是字符串而非数字。 3. 可能的数据绑定或序列化问题,如XML或JSON转换时出错。 要解决这个问题,你需要检查出错代码行,确认是否正确地处理了数据类型,并确保在发送和接收数据时类型匹配。如果是在调用远程服务,检查一下服务的文档,看看预期的参数格式。如果是代码错误,修复转换的地方,可能需要使用`Long.parseLong()`或`Long.valueOf()`函数来正确转换字符串。如果你不确定,还可以考虑添加适当的异常处理代码来捕获并处理这个错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值