cxf 异常: No namespace on "html" element. You must send a SOAP request

调用web服务 http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl 。我用wsdl2java命令生成服务接口和类(无法成功,将wsdl文件拷贝到本地,去掉<s:element ref="s:schema" />,用wsdl2java执行本地修改后的wsdl文件成功)。
用下面的方法调用服务,没有问题:
public static void main(String[] args) {
WeatherWS ww = new WeatherWS();
ArrayOfString aos = ww.getWeatherWSSoap().getWeather("深圳", null);
System.out.println(aos.getString());

}


导入cxf的包,继续执行就出现异常:
十二月 06, 2014 12:18:04 下午 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
信息: Creating Service {http://WebXml.com.cn/}WeatherWS from WSDL: file:/E:/JAVADOME/weather-webService-client_dome/src/weather.wsdl
十二月 06, 2014 12:18:10 下午 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
警告: Interceptor for {http://WebXml.com.cn/}WeatherWS#{http://WebXml.com.cn/}getWeather has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: No namespace on "html" element. You must send a SOAP request.
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.readVersion(ReadHeadersInterceptor.java:112)
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:161)
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1636)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1525)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1330)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:638)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:137)
at com.sun.proxy.$Proxy44.getWeather(Unknown Source)
at dome.test.T.main(T.java:13)
用同样的方法调用web服务 http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl没有问题。不通的在于,这个地址可以直接用wsdl2java命令生成接口。
如果我要用spring cxf 要怎么解决
### 回答1: 这是一个 SOAP 错误,表示在程序运行时发生了空指针异常。这意味着您的程序尝试调用了一个 null 对象的方法或访问了一个 null 对象的属性,而该对象的实际值为 null。解决这个问题的方法是检查您的代码,找出哪个对象是 null 并将其初始化为有效值。 ### 回答2: org.apache.cxf.binding.soap.SoapFault: Fault: java.lang.NullPointerException 是一个SOAP异常,它指出在处理SOAP消息时发生了一个空指针异常SOAP(简单对象访问协议)是一种用于在网络上交换结构化信息的协议。当客户端与服务端之间通过SOAP通信时,可能会出现各种异常,包括空指针异常。 在这种情况下,org.apache.cxf.binding.soap.SoapFault 表示SOAP通信期间发生了错误,导致服务端返回了一个SOAP错误消息。这个错误消息的具体内容是 &quot;Fault: java.lang.NullPointerException&quot;,意味着在服务端处理请求时发生了空指针异常。 空指针异常(java.lang.NullPointerException)通常是由于使用了一个空对象的引用而产生的。在这种情况下,服务端可能在处理请求过程中调用了一个未初始化或为空的对象,导致空指针异常的抛出。这可能是由于代码缺陷、错误的数据传递或其他运行时错误导致的。 要解决这个问题,需要检查服务端代码,并确保正确地初始化和使用对象引用,避免出现空指针异常。可以使用调试技术或添加日志语句来帮助确定引发异常的具体位置,并进行修复。此外,还可以检查数据传递过程中是否存在错误,确保正确地传递和解析数据。 总之,org.apache.cxf.binding.soap.SoapFault: Fault: java.lang.NullPointerException 是一个SOAP异常,它告诉我们在处理SOAP消息时发生了一个空指针异常。解决此问题需要检查服务端代码,并确保正确地初始化和使用对象引用,以及确保数据传递过程中的正确性。 ### 回答3: org.apache.cxf.binding.soap.SoapFault: Fault: java.lang.NullPointerException是一个SOAP协议的错误,它表示在CXF框架中发生了一个空指针异常。 空指针异常(NullPointerException)通常是由于程序中的某个对象为空而引起的。在这个特定的错误中,CXF框架在处理SOAP消息时发生了一个未预料到的空指针异常。 要解决这个问题,我们需要追踪错误的发生点并找出为空的对象。首先,检查CXF框架相关的配置文件,确保所有的依赖项都正确地配置和加载。如果配置正确,那么可能是代码中的某个对象没有正确地被初始化或注入。 使用调试工具来调试代码是一种很好的方法,它可以帮助我们找出具体的出错位置。一旦错误点被确定,我们可以通过增加空检查的逻辑或者检查对象的初始化过程来解决这个问题。 另外,确保在CXF框架的使用过程中遵循最佳实践,例如正确地配置和使用CXF异常处理机制,以及正确地处理和记录异常信息。 总而言之,org.apache.cxf.binding.soap.SoapFault: Fault: java.lang.NullPointerException表示在CXF框架中发生了一个空指针异常。为了解决这个问题,我们需要定位并修复代码中的空指针异常
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值