PHP调用wsdl接口实例化SoapClient抛出异常
2017-04-18 11:24
736 查看
异常:Message:SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://*****?wsdl' : failed to load external entity "http://****?wsdl"。
本地调用接口正常,放到服务器上以后,出现了500错误。try{}cache(){}:
try{
$client=new SoapClient($wsdl);
}catch(Exception $e){
echo 'Message:'.$e->getMessage();
}
抛出异常:Message:SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://*****?wsdl' : failed to load external entity "http://****?wsdl"。
首先确认,服务器PHP环境配置和本地一样。也百度了很多解决办法,都没起作用,请教了接口的开发者.NET 工程师。发给一张截图:
解决办法:$client=new SoapClient($wsdl);这句代码前添加libxml_disable_entity_loader(false); 问题就这样解决了。
查libxml_disable_entity_loader()作用: Disable the ability to load external entities(禁用加载外部实体的能力)。
SoapClient在我的代码里面确实是外部的实体,我不禁用加载外部实体的能力,就可以实例化SoapClient。问题也就自然而然的解决了。
PHP调用Web services接口实例:
$url='http://****?wsdl';
$client = new SoapClient($url);
$param = array("param1"=>$param1,"param2"=>$param2);
方法1:
$p = $client->__soapCall('functionname',array("parameters"=>$param));
$arr= json_decode($p->functionnameResult,true);
方法2:
$ret2 = $client->functionname($param);
$actjson=$ret2->functionnameResult;
$arr=json_decode($actjson,true);
return $arr;
本地调用接口正常,放到服务器上以后,出现了500错误。try{}cache(){}:
try{
$client=new SoapClient($wsdl);
}catch(Exception $e){
echo 'Message:'.$e->getMessage();
}
抛出异常:Message:SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://*****?wsdl' : failed to load external entity "http://****?wsdl"。
首先确认,服务器PHP环境配置和本地一样。也百度了很多解决办法,都没起作用,请教了接口的开发者.NET 工程师。发给一张截图:
解决办法:$client=new SoapClient($wsdl);这句代码前添加libxml_disable_entity_loader(false); 问题就这样解决了。
查libxml_disable_entity_loader()作用: Disable the ability to load external entities(禁用加载外部实体的能力)。
SoapClient在我的代码里面确实是外部的实体,我不禁用加载外部实体的能力,就可以实例化SoapClient。问题也就自然而然的解决了。
PHP调用Web services接口实例:
$url='http://****?wsdl';
$client = new SoapClient($url);
$param = array("param1"=>$param1,"param2"=>$param2);
方法1:
$p = $client->__soapCall('functionname',array("parameters"=>$param));
$arr= json_decode($p->functionnameResult,true);
方法2:
$ret2 = $client->functionname($param);
$actjson=$ret2->functionnameResult;
$arr=json_decode($actjson,true);
return $arr;
相关文章推荐
- thinkphp 调用wsdl接口实例化SoapClient抛出异常
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- php利用soap实现调用获取返回信息的代码实例
- 使用zeng studio 创建的php调用webservice soap简单实例
- php利用SoapClient调用webservices
- 基站云接口开发实例(PHP调用基站数据接口)
- 使用zeng studio 创建的php调用webservice soap简单实例
- php中soap 的使用实例和一些个人看法!亲测,无需手写WSDL文件,提供自动生成WSDL文件类(转)
- php soap实例(一)无wsdl模式
- php利用SoapClient调用webservices你会不?
- php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类
- php利用SoapClient调用webservices
- php soap实例:用zend studio 生成wsdl,php做soap服务端
- php调用webservice报错Class 'SoapClient' not found
- 调用FTPClient 的getModificationTime方法时抛出 ArrayIndexOutOfBoundsException异常的解瘊办法
- php中soap 的使用实例无需手写WSDL文件,提供自动生成WSDL文件类
- php——SoapClient实例
- php中soap 的使用实例和一些个人看法!亲测,无需手写WSDL文件,提供自动生成WSDL文件类
- php学习之道:php中soap的使用实例以及生成WSDL文件,提供自己主动生成WSDL文件的类库——SoapDiscovery.class.php类
- 基站云接口开发实例(PHP调用基站数据接口)