thinkphp 调用wsdl接口实例化SoapClient抛出异常
2017-12-25 13:36
393 查看
异常: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 工程师。发给一张截图:
![](https://images2015.cnblogs.com/blog/581654/201704/581654-20170418111308712-486479987.png)
解决办法:$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 工程师。发给一张截图:
![](https://images2015.cnblogs.com/blog/581654/201704/581654-20170418111308712-486479987.png)
解决办法:$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;
相关文章推荐
- PHP调用wsdl接口实例化SoapClient抛出异常
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- 使用visual studio 2015调用阿里云oss .net sdk 2.2的putobject接口抛出outofmemory异常
- js 调用后台方法 ICallbackEventHandler 接口实现局部刷新实例 ClientScript的GetCallbackEventReference方法实现局部刷新
- Java HttpClient在外围接口调用实例
- 打包war包部署到Tomcat。调用接口时,pad端提示:连接服务器异常。但后台无任何异常抛出
- apache httpclient HTTPS发送JSON调用接口实例
- thinkphp5 使用soap调用接口
- webservice接口常见问题1:客户端使用SOAP方式调用CXF服务时异常
- Android开发中调用Spring CXF整合发布的WebService接口为什么抛出异常错误?
- 使用soap调用wsdl的接口实战
- gsoap生成客户端程序,调用接口时出现 Error 200 fault: SOAP-ENV:Client [no subcode] 修改方法
- 调用FTPClient 的getModificationTime方法时抛出 ArrayIndexOutOfBoundsException异常的解瘊办法
- wsdl接口调用测试
- SVN Client API的.net 接口 SharpSvn介紹 Checkout操作实例
- WebService 服务端客户端 实例 HTTPRIO (一) SOAP WSDL
- java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)
- SoapClient出异常500,怎么能catch住,求解答
- 微信小程序 wx.request(接口调用方式)详解及实例
- HttpClient方式调用接口的实例