zoukankan      html  css  js  c++  java
  • thinkphp 调用wsdl接口实例化SoapClient抛出异常

    异常: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;

  • 相关阅读:
    脱壳实践之手动构造输入表
    脱壳实践之寻找OEP——堆栈平衡法
    脱壳实践之寻找OEP——两次内存断点法
    PE文件格式详解(八)
    PE文件格式详解(七)
    PE文件格式详解(六)
    Eclipse 安装 Maven 插件(图文解说)
    在线图片压缩后以ImageIO 流的形式 设置大小显示指定页面
    Android-studio开发 快捷键
    简明 Git 命令速查表(中文版)
  • 原文地址:https://www.cnblogs.com/houdj/p/8108982.html
Copyright © 2011-2022 走看看