-
- class FruitQuoteService
- {
- public $__dispatch_map = array();
- public $__typedef = array();
- public function FruitQuoteService()
- {
- $this->__dispatch_map['getQuote '] = array(
- "in" => array("category" => "string"),
- "out" => array("quote" => "int")
- );
- $this ->__dispatch_map['getFruit'] = array(
- "in" => array(),
- "out" => array("fruitsummary" => "{urn:FruitQuoteService}fruitStruct")
- );
-
- $this->__typedef['fruitStruct'] = array(
- 'category'=>'string', 'amount' => 'int'
- );
- }
-
- public function getQuote($category)
- {
- switch ($category)
- {
- case 'apple':
- $quote = 10;
- Break;
- case 'orange':
- $quote = 12;
- Break ;
- case 'banana':
- $quote = 20;
- ブレーク;
- デフォルト:
- $quote = 0;
- ブレーク;
- }
- return $quote;
- }//関数終了
-
- public function getFruit()
- {
- $list = array(
- array("apple", 100),
- array("orange", 500),
- array("banana", 260)
- );
- return $list;
- }//関数を終了
- }//end class
- ?>
复制代码
第二步:创建server.php 这个程序将受信收并处理客户端的请求
-
- require_once("FruitQuoteService.php");
- require_once("SOAP/Server.php");
- $fruitQuote = new FruitQuoteService();
- $server = new Soap_Server();
- $server->addObjectMap($fruitQuote, "http://www.xxx.com");
- if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST' )
- {
- $server->service($GLOBALS['HTTP_RAW_POST_DATA']);
- } else
- {
- require_once 'SOAP/Disco.php';
- $disco = new SOAP_DISCO_Server($server,'FruitQuoteService');
- header("Content-type: text/xml");
- if (isset($_SERVER['QUERY_STRING']) && strcasecmp($_SERVER['QUERY_STRING'],'wsdl')==0) {
- echo $ disco->getWSDL();
- } else {
- echo $disco->getDISCO();
- }
- }
- exit;
- ?>
-
复制幣
现在http:// www.shangyong.com/ws/server.php?wsdl wsdl文档をご覧ください。
DISCO:Web サービスの配信と公開に使用されるマイクロスクリプトで、Web サービスの指定された URL から取得する HTTP GET 機構を定義します
第三步:创建web服务客户端代
- require_once('SOAP/Client.php');
- //この名前空間间はserver.phpと一致する必要があります
- $options = array('namespace' => 'http ://www.xxx.com',
- 'トレース' => // 1 であることを示すため、__get_wire を介して SOAP メッセージを取得できます。
- $response = $client->call("getFruit", $params, $options);
- //print_r($client->gt;__get_wire()); //ソープメッセージ
- if (PEAR::isError($response)) {
- echo 'Error: ' . $response->getMessage() 。 "
n";
- } else {
- print_r($response) . "n";
- }
- $params = array("name" => "orange");
- $response = $client->call("getQuote", $params, $options);
- if (PEAR: :isError($response)) {
- echo 'エラー: ' 。 $response->getMessage() 。 "
n";
- } else {
- echo $response . "nn";
- }
- exit;
- ?>
-
-
- 复制代
客户端代2
-
- require_once('SOAP/Client.php');
- /**
- * 名前空間、UEL、パラメータ名などのすべてのサービス内容は、wsdl ファイルから取得できます
- */
- $wsdl = new SOAP_WSDL("http://www.shangyong.com/ws/ server.php?wsdl");
- /**
- * wsdl からプロキシ オブジェクトを生成します。このオブジェクトには、wsdl ドキュメントで定義されたすべての操作メソッドが含まれます。
- * プロキシオブジェクトを通じて関数を直接呼び出すことができます
- * 利点: ユーザーにとって使いやすい
- */
- $client = $wsdl->getProxy();
- $response = $client->getQuote("apple");
- if (PEAR ::isError($response)) {
- echo 'エラー: ' 。 $response->getMessage() 。 "
n";
- } else {
- echo $response . "nn";
- }
- $response = $client->getFruit();
- if (PEAR::isError($response)) {
- echo 'エラー: ' . $response->getMessage() 。 "
n";
- } else {
- print_r($response) . "n";
- }
- exit;
- ?>
复制代
|