今天真是被这个叫“axisfault”的玩意儿折腾一天,头都大。不过好歹是解决,赶紧记录一下,省得以后再踩坑。
起因
事情是这样的,我最近在搞一个项目,需要用到webservice来获取一些数据,你知道的,就是那种XML格式的东西。我选axis这个工具,想着挺成熟的,应该没啥问题。结果,啪啪打脸。
经过
我按照网上的教程,一步一步来,创建项目,配置环境,生成代码,一切都顺风顺水。我还美滋滋地想着,今天可以早点下班。结果,运行的时候,控制台给我报个错,就是这个“axisfault”。
我一看,错误信息是这样的:AxisFault faultCode: {*/soap/envelope/}* faultSubcode: faultStri。当时我就懵,这都是啥跟啥?
没办法,只能硬着头皮去网上查。各种搜,各种试。有人说版本不兼容,有人说环境配置有问题,还有人说是代码写的有问题。我一个个试过来,都不行,心态都快崩。
我还试过重新安装axis,甚至把JDK和Tomcat都重装一遍,还是没用。我都开始怀疑是不是我的电脑有问题。
后来我静下心来,仔细看看错误信息,发现一个关键词:“*”。这个词让我觉得,问题可能出在服务端,而不是我的客户端。
解决
于是我把重点放在服务端的代码上。我一行一行地检查,终于发现一个问题。原来是服务端的一个方法,在处理数据的时候,可能会抛出一个自定义的异常。而这个异常,没有在WSDL文件中声明。
找到问题所在,解决起来就简单多。我在WSDL文件中,把这个自定义异常声明一下,然后重新生成客户端代码。再次运行,一切OK!
总结
这回的经历,真是让我印象深刻。总结几点教训:
- 遇到问题,不要慌,先仔细看错误信息,找到关键点。
- 不要盲目尝试各种方法,要有针对性地去解决问题。
- 有时候,问题可能并不在自己身上,要考虑其他方面的因素。
- 遇到问题及时记录。
今天的分享就到这里。希望我的这回经历,能对大家有所帮助。下次遇到“axisfault”,可别像我一样,折腾这么久。