折雨的天空

新浪微薄腾讯微薄

最新碎语:最近霉到了住。哎。。。

您的位置:折雨的天空 >php开发> java调用php的webservice接口报错:faultString: org.xml.sax.SAXException: Bad envelope tag: definitions

java调用php的webservice接口报错:faultString: org.xml.sax.SAXException: Bad envelope tag: definitions

没有了google的时候,遇到问题真的不好解决

以前一直用huhamhire-hosts改hosts挺好用了,但是重装系统后,这个也用不起了,没得谷歌了,还是要解决问题,将就用bing吧


这些都是题外话


说说经过:


我用php给别人提供了一个wsdl接口,php端,使用SoapDiscovery类自动生成的wsdl


测试用php调用接口,没有问题

第三方也有c#调用过,也没有任何问题,并且已上线运行


但是遇到一个使用Java的,调用这边的接口就报错:faultString: org.xml.sax.SAXException: Bad envelope tag:  definitions


由于我并不会java所以处理起来很困难,至少我要学会找段java代码来调用我的接口,才能调试吧


于是,下载安装java编辑器


因为之前已有Jdk这些了,还好


安装了java编辑器,网上找了段java调用webservice接口的代码


于是试着改一下,调用我的接口,出现了上面的错误


复现错误容易,要解决难了


用360,百度,Bing持续搜索,搜索关键字当然是上面那段,试了很多种方法,网上的办法基本都试了,没有任何效果


看到有一个人解决了问题,说是wsdl本身的问题


于是,我又想试着是不是自己的wsdl不符合规范


找了wsdl的语法,重新找了php生成wsdl的办法,包括nusoap类,重新生成wsdl


但是都没能解决


再试,wsdl本身,一段代码一段代码的删除,然后调试,获取结果


仍然无果,这当中,当然报错会不一样了


在各种办法都试完了以后,重新使用搜索引擎,改变了关键字


于是找到文章:


http://www.blogjava.net/mrcold/archive/2009/06/17/220044.html


这篇文章的报错是一样的,然后他也没能解决,但是在评论里,他又发了一个连接:


http://www.blogjava.net/mrcold/archive/2008/08/05/220121.html


通过这篇文章,顺利解决了问题


总结下来:


网上最多的解决办法把?wsdl去掉,这个是有道理的


因为我在调试使用php的nusoap的时候,它生成wsdl的时候,就不是一个真正的wsdl文件,而是一个php文件的输出,在Url最后就有一个?wsdl


如果去掉的话,那么这个java中的endpoint的地址,就正好变成了,webservice的执行地址了


上面两个链接里提到了wsdl 和 owl-s的区别


这些比较专业的,我不好描述,因为我也不熟悉他们


我只知道我的wsdl是程序生成的,而php和c#里调用也是指向wsdl文件本身的


最终的解决办法就是:


这个文件指向的问题,php和c#里,都是指向wsdl本身,而java里,这里用的axis,却要把地址指向php的soapserver声明,也就是wsdl中,soap:address的location属性


这里附上一些图:


QQ图片20150606195615.png


下面是wsdl中的soap:address


QQ图片20150606195615.png

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《java调用php的webservice接口报错:faultString: org.xml.sax.SAXException: Bad envelope tag: definitions

奖励一下

取消

您的认可,是我写博客的动力,谢谢您!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论

路人甲 表情
看不清楚?点图切换