用php5+ 做 webservice (php soap webservice)

SOAP簡單對象訪問協議

  (SOAPSimple Object Access Protocol

  簡單對象訪問協議(SOAP)是一種輕量的、簡單的、基於 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的信息。 SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。

  SOAP 包括四個部分:

  SOAP 封裝:它定義了一個框架 , 該框架描述了消息中的內容是什麼,誰應當處理它以及它是可選的還是必須的。

  SOAP 編碼規則:它定義了一種序列化的機制,用於交換應用程序所定義的數據類型的實例。

  SOAP RPC 表示:它定義了用於表示遠程過程調用和應答的協定。

  SOAP 綁定:定義了一種使用底層傳輸協議來完成在節點間交換SOAP封裝的約定。

  SOAP 消息基本上是從發送端到接收端的單向傳輸,但它們常常結合起來執行類似於請求 / 應答的模式。所有的 SOAP 消息都使用 XML 編碼。一條 SOAP 消息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的 XML 文檔。

  把 SOAP 綁定到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及 HTTP 的豐富的特徵庫的優點。在 HTTP 上傳送 SOAP 並不是說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會自然的映射到 HTTP 語義。在使用 HTTP 作爲協議綁定的場合中, RPC 請求映射到 HTTP 請求上,而 RPC 應答映射到 HTTP 應答。然而,在 RPC 上使用 SOAP 並不僅限於 HTTP 協議綁定。

  SOAP也可以綁定到TCPUDP協議上。  

WSDL 簡介

  Web Services Description Language的縮寫,是一個用來描述Web服務和說明如何與Web服務通信的XML 語言。 

php5+ webservice

1,首先要設置服務器環境。

  修改php.ini

  得添加 extension=php_soap.dll (加載soap 內置包)

  修改 soap.wsdl_cache_enabled=1  改爲 soap.wsdl_cache_enabled=0

 

2,soap 服務端。( Zend Studio For Eclipse 編寫)

  2.1, 寫一個用來提供給客戶端用的類文件 ( DizzyLion.php )

  Class DizzyLion {

                      / **

                      * 求和函數

                      * @param float $p_a

                      * @param float $p_b

                      * @return float           

                      * /

                   Public function sum($p_a, $p_b){

                          Return $p_a + $p_b;

                   }

 }

說明:寫上函數的標準註釋有利於下面做wsdl的工作。

2.2, 生成wsdl 文件。(dizzylion.wsdl)如果這個你能手寫,那你真是太強了。我用zend studio 生成的。

       我用的Zend Studio for Eclipse 6.1

       ’File’->’Export’->’PHP’->’WSDL File’

       “Generate WSDL File” 的窗口中。

       Configuration name 取自己想設的名字;File name 指定要生成wsdl文件(dizzylion.wsdl);Exported files “Add”添加剛剛的 DizzyLion.php類文件;在 classer url 就會出現DizzyLion.php的所有類, 勾選 DizzyLion. url 寫入 server.phpWEB訪問URL如:http://localhot/server.php。點“finish”就好了。如果有上面的標準註釋這裏就不用再去設置wsdl裏對應參數類型之類了。

2.3, Soap 服務端文件 (server.php)

       <?php

              Require ‘./DizzyLion.php’;

              $server = new SoapServer(‘./dizzylion.wsdl’);

              $server->setClass(‘DizzyLion’);

              $server->handle();

         ?>

3, Soap客戶端。(client.php)

<?php

   $soap = new SoapClient(‘./dizzylion.wsdl’); //如果是遠程,那當然寫dizzylion.wsdlURL了。

   echo $soap->sum(1.1,  3.1);

?>

  運行client.php 得到 4.2 .

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章