Axis 2 org.apache.axis2.AxisFault: Namespace URI may not be null 解决办法。已试过多种后的

自己发现错误记录
使用axis2 生成桩代码后,调用时报错,Namespace Uri May Not be null
去网上搜,说缺包的,jdk 版本的,myeclipse jar冲突的都有。都不管用。
自己debug桩代码发现,
         _serviceClient.addHeadersToEnvelope(env);
        // set the message context with that soap envelope
        _messageContext.setEnvelope(env);
        // add the message contxt to the operation client
        _operationClient.addMessageContext(_messageContext);
        //execute the operation client  执行远程方法调用
        _operationClient.execute(true);
        //返回信息
               org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient.getMessageContext(
                                           org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
  
  org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
// _returnEnv 应该是返回的xml信息
  //当我debug 到这时 鼠标放上查看信息,写的并不是xml,但是我用鼠标点击对象一下,显示的信息变为xml了。而且里面可以看到返回信息,
  //更奇怪的是,放行debug 后程序成功执行。但是没有解析到返回值。
  //多次debug 发现,只要我在这个位置用鼠标点击查看到xml 程序就可以执行,不点击或者不debug 都会报错Namespace Uri May Not be null
  //我就认为是xml解析出现问题,也没有想去反编译什么的。就继续在网上搜
  //看到兄弟写的反编译,我决定好好看看,说不定有解决思路。果然。如兄弟所说
  可以看到Axis2的内部处理机制,就是一但发现响应报文有Fault节点,它就要抛异常。
  于是将options..setExceptionToBeThrownOnSOAPFault(true),改为false,程序立刻好了。执行没问题,返回值也获取到了。
  
  感谢原作者
  总结:按兄弟说的,一切的害怕源于对代码的神秘,未知,当你把它当成自己写的代码,去反编译,去阅读,那就不会再害怕!
options.setExceptionToBeThrownOnSOAPFault(false);  
org.apache.axis2.client.Options 
如果有桩代码可以在桩代码里改,里面有默认的true

_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);

改为

_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(false);


下边链接是我看到的解决办法的兄弟写的,可以去看看。

参考链接:

https://blog.csdn.net/wandrong/article/details/70275429#commentsedit点击打开链接


啊啊啊啊啊 还是没解决  你们参考下就算了我自己的还没解决555555


几天后我又来了  这次真的解决了哈哈哈哈。

写服务的终于给回复了,他们使用xfire 写的,不知道什么原因,axis2 和cxf 解析xfire 返回的xml  都报错,可能是不兼容,或者版本问题。实在不行我换了xfire 自己找包,用xfire 来了一版。至于缺少的依赖包,根据报错提示导入就行。最后执行顺利通过,总算解决了。


遇到问题首先查询是否自己环境、代码问题。如果是非常顽固的问题,还是与服务端沟通。最好使用同一工具同一版本。累死啦。。



你可能感兴趣的:(java,webservic,axis2)