前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记|Lumen请求webservice服务

笔记|Lumen请求webservice服务

作者头像
如梦初醒_-
发布2022-10-26 15:52:09
3250
发布2022-10-26 15:52:09
举报
文章被收录于专栏:最后一声蝉鸣最后一声蝉鸣

首先封装一个请求方法

代码语言:javascript
复制
     /**
      * @param $uri    //webservice 地址
      * @param $xml    //xml主体
      * @param $fuc    //方法
      * @param $data    //请求参数
      * @return false
      *
      */
    public function sendSoap($uri, $xml,$fuc,$data)
    {
         ini_set("soap.wsdl_cache_enabled", 0);
        libxml_disable_entity_loader(false);
         $class_name = __CLASS__;
         try
         {
            $soap = new \SoapClient($uri, ['soap_version' => SOAP_1_2, "trace" => 1,'cache_wsdl' => 0, 'connection_timeout' => 10]);
            $soap->__setLocation($uri);
            logMessage('【SOAP请求:】' . $xml , $class_name);
            switch ($fuc)
             {
                 case 'GetClinicItem':
                     // 调用函数
                    $result_xml = $soap->__soapCall($fuc, []);//调用方式2
                    logMessage('【SOAP返回:】' . $result_xml->GetClinicItemResult, $class_name);
                    return $result_xml->GetClinicItemResult;
                    break;
                 case 'GetClinicItemDetail':
                     // 调用函数
                     $result_xml = $soap->__soapCall($fuc, $data);//调用方式2
                    logMessage('【SOAP返回:】' . $result_xml->GetClinicItemDetailResult, $class_name);
                     return $result_xml->GetClinicItemDetailResult;
                     break;
             }
         }
         catch (\SoapFault $fault)
         {
             logMessage('【SoapFault:】' . $fault->getMessage(), $class_name);
             return false;
         }
         catch (\Exception $exception)
         {
             logMessage('【SOAP报错:】' . $exception->getMessage(), $class_name);
             return false;
         }
     }

调用此方法

代码语言:javascript
复制
 $xml =<<<XML <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:tem="http://tempuri.org/">    <soapenv:Header/>   
 <soapenv:Body>
       <tem:GetClinicItem/>    </soapenv:Body> </soapenv:Envelope> XML;
 
  $result_xml = $this->sendSoap([webservice地址],
 $xml,[方法名],[传参]);

踩坑

传参是个二位数组 例如:

代码语言:javascript
复制
$data=[['节点名称'=>'val']];

有莫名其秒的报错时,可以加一下这两个配置在请求前

代码语言:javascript
复制
ini_set("soap.wsdl_cache_enabled", 0);
libxml_disable_entity_loader(false);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先封装一个请求方法
  • 调用此方法
  • 踩坑
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档