php webservice 可能存在的坑
2016-07-15 14:52
501 查看
场景:
今天在生产机器上调用webservice失败 报 ...failed to load external entity...
wget一下地址发现报500错误 把wsdl去掉再wget 发现就没有任何问题 ,一想估计是生成wsdl协议时出错了 于是找一下接口方看看,但没有发现任何问题。
用soapUI加载失败
用浏览器打开接口地址发现一条信息(wget居然没给我显示出来)
WSDL generation is not supported yet 看到这句话 我在想平时加上wsdl难道是虚假的没用的?
单写一个php测试soap代码
发现去掉wsdl 和加上wsdl 完全没有任何影响,都能调取数据
再看看SoapClient方法解释
第一个参数是填的null 表示不需定义wsdl,用这种方式是无法跨语言访问服务,因为我们访问拿不到wsdl,php之间调用还是可以,果然代码里面的地址写成?wsdl是装逼用的。
如果把null改为wsdl地址就会抛出异常
ok 原因找到 结案!
今天在生产机器上调用webservice失败 报 ...failed to load external entity...
wget一下地址发现报500错误 把wsdl去掉再wget 发现就没有任何问题 ,一想估计是生成wsdl协议时出错了 于是找一下接口方看看,但没有发现任何问题。
用soapUI加载失败
WSDLException (at /SOAP-ENV:Envelope): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
用浏览器打开接口地址发现一条信息(wget居然没给我显示出来)
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>WSDL generation is not supported yet</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
WSDL generation is not supported yet 看到这句话 我在想平时加上wsdl难道是虚假的没用的?
单写一个php测试soap代码
$client = new SoapClient(null,array('location'=>'http://xxx.com/WebServerApi.php?wsdl','uri' =>'http://127.0.0.1/'));
发现去掉wsdl 和加上wsdl 完全没有任何影响,都能调取数据
再看看SoapClient方法解释
Description public SoapClient::SoapClient ( mixed $wsdl [, array $options ] ) This constructor creates SoapClient objects in WSDL or non-WSDL mode. Parameters wsdl URI of the WSDL file or NULL if working in non-WSDL mode.
第一个参数是填的null 表示不需定义wsdl,用这种方式是无法跨语言访问服务,因为我们访问拿不到wsdl,php之间调用还是可以,果然代码里面的地址写成?wsdl是装逼用的。
如果把null改为wsdl地址就会抛出异常
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://xxx.com/WebServerApi.php?wsdl' : failed to load external entity
ok 原因找到 结案!
相关文章推荐
- PHP静态变量和全局变量的区别
- 搞不清FastCgi与PHP-fpm之间是个什么样的关系
- ATOM基础教程一atom-autocomplete-php配置(14)
- sublime 直接运行php代码
- 【框架】JitPack---如何拥有自己的动态库
- php安装imagick扩展
- php 时间加减
- 【旧代码整理】/project/library/function.php 基本function部分
- PHP 给当前时间加日期
- php Logs类
- laravel excel安装使用,导入(读)导出(数据写入文件)
- 新浪微博LAMP性能优化之路 - PHP性能优化
- 【译】PHP中的Session及其一些安全措施
- 自定义PHP页面跳转函数redirect($url, $time = 0, $msg = '')
- NULL和空是两个概念的原因
- htpasswd 详解
- php中return exit() die()的区别
- php访问url的四种方式
- PHP类的属性不能被赋值为变量的原因
- php面向对象中this,self,parent三个关键字的含义