国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

laravel中soapServer支持wsdl的例子

elarity / 2082人閱讀

摘要:上邊這段代碼是無模式下的,但是這次是對接第三方的服務,需要我們這邊去定義,第三方來調用,第三方定義的是模式的,所以今天研究了下。

$server = new SoapServer(null, ["uri" => "noganluonguri"]);
$server->setObject(new NganluongServer());
ob_start();
$server->handle();
return ob_get_clean();

上邊這段代碼是無wsdl模式下的,但是這次是對接第三方的服務,需要我們這邊去定義soap webservice,第三方來調用,第三方定義的是wsdl模式的,所以今天研究了下。

laravel代碼示例(其它框架類似思考方式):

主要邏輯代碼 - SoapService.php


創建路由

$api->any("soapUrl", "SoapCallbackController@soapFun");

路由主要實現方法-wsdl不存在則創建,不需要手動創建,url:https:xxx/soapurl?wsdl

getWSDL());
                    fclose($file);
                }
                $server = new SoapServer($storagePath . "/wsdl/" . $className . ".wsdl", array("soap_version" => SOAP_1_2));
                $server->setClass($procClass);
                $server->handle();
            } catch (Exception $e) {
                Log::error("wsdl服務創建異常");
            }
        }
    }

生成wsdl類 - SoapDiscovery.php

class_name = $class_name;
        $this->service_name = $service_name;
    }

    /**
     * SoapDiscovery::getWSDL() Returns the WSDL of a class if the class is instantiable.
     * 
     * @return string
     * */
    public function getWSDL() {
        if (empty($this->service_name)) {
            throw new Exception("No service name.");
        }
        $headerWSDL = "
";
        $headerWSDL.= "
";
        $headerWSDL.= "
";

        if (empty($this->class_name)) {
            throw new Exception("No class name.");
        }

        $class = new ReflectionClass($this->class_name);

        if (!$class->isInstantiable()) {
            throw new Exception("Class is not instantiable.");
        }

        $methods = $class->getMethods();

        $portTypeWSDL = "service_name . "Port">";
        $bindingWSDL = "service_name . "Binding" type="tns:" . $this->service_name . "Port">

";
        $serviceWSDL = "service_name . "">

service_name . "Port" binding="tns:" . $this->service_name . "Binding">


";
        $messageWSDL = "";
        foreach ($methods as $method) {
            if ($method->isPublic() && !$method->isConstructor()) {
                $portTypeWSDL.= "getName() . "">
" . "getName() . "Request" />
getName() . "Response" />

";
                $bindingWSDL.= "getName() . "">
" . "service_name . "#" . $this->class_name . "#" . $method->getName() . "" />






";
                $messageWSDL.= "getName() . "Request">
";
                $parameters = $method->getParameters();
                foreach ($parameters as $parameter) {
                    $messageWSDL.= "getName() . "" type="xsd:string" />
";
                }
                $messageWSDL.= "
";
                $messageWSDL.= "getName() . "Response">
";
                $messageWSDL.= "getName() . "" type="xsd:string" />
";
                $messageWSDL.= "
";
            }
        }
        $portTypeWSDL.= "
";
        $bindingWSDL.= "
";
        //return sprintf("%s%s%s%s%s%s", $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, "");
        //生成wsdl文件,將上面的return注釋
        $fso = fopen($this->class_name . ".wsdl", "w");
        fwrite($fso, sprintf("%s%s%s%s%s%s", $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, ""));
    }

    /**
     * SoapDiscovery::getDiscovery() Returns discovery of WSDL.
     * 
     * @return string
     * */
    public function getDiscovery() {
        return "


";
    }

}

?>

webservice測試

getSum(10, 24);
echo $soap->__soapCall("getSum",array(10,24));

如有問題請請出,謝謝支持。QQ273086429

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29570.html

相關文章

  • PHP SOAP 擴展使用

    摘要:類也是一個只包含構造器的低級類,與和類相似。安裝擴展對于平臺,需要在中加入如下代碼上面的工作完成之后,還需要注意的是擴展在配置文件中有獨立的代碼片段這些配置項主要是用來指定處理文件時使用緩存的行為。支持與擴展類似的。 原文地址:PHP SOAP 擴展,本文在原文基礎上添加了一些內容和章節,也加入了一些注釋,請讀者注意。 前兩篇文章 《SOAP 介紹》 和 《SOAP Web 服務介紹》...

    Cympros 評論0 收藏0
  • spring boot開發soap webservice

    摘要:本文介紹如何在中開發接口,以及接口如何同時支持和兩種協議。該功能很簡單,就是通過一個人的姓名查詢這個人的詳細信息。就是關鍵,如本次請求報文如下就是,對應。測試使用進行測試,通過地址導入文件進行測試。測試這樣就實現了和同時提供的目的。 介紹spring boot web模塊提供了RestController實現restful,第一次看到這個名字的時候以為還有SoapController,...

    Ashin 評論0 收藏0
  • 學習 PHP SOAP 擴展一些筆記

    摘要:對的相關學習就先告此一段落,這是最后一篇文章用來記錄下學習過程中的一些筆記和心得。對,沒錯在還沒有提供擴展前,的確很多人也是這樣做的。總結上面都是自己在學習擴展時的一些零散的筆記,如果有不對的地方,希望大家指出,謝謝。 對 SOAP 的相關學習就先告此一段落,這是最后一篇文章用來記錄下學習過程中的一些筆記和心得。 前面三篇文章分別是: 《SOAP 介紹》 《SOAP Web 服務介紹...

    wthee 評論0 收藏0
  • nginx配置laravel項目

    server{ listen 443; server_name 10.0.3.15 ssl on; ssl_certificate /etc/nginx/conf.d/3i.crt; ssl_certificate /etc/nginx/conf.d/3i_nopass.key; root /var/www/html/3i-mobile/publ...

    KavenFan 評論0 收藏0

發表評論

0條評論

elarity

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<