NuSoapを応用して新しいPHPベースのWebサービスを構築する

3173 ワード

1つの例ですべてを説明することができます.まず、nusoapとphpを適用してwebサービスを構築する方法を説明するために、簡単な例を挙げましょう.この例のアプリケーションはphpウェブサービスのサーバ側とクライアントから構成されています.彼は2つの機能を実現します:1つの文字列の文字の順序を逆さまにして、2つの数の和を求めます.php soapサーバはphpとnusoapでsoapサーバを構築するのが簡単です.基本的には、あなたが暴露したいwebサービスの関数を書いてnusoapで登録すればいいのです.OK、php soapサーバの構築を完了するには2つのステップが必要です.まずphpコードにnusoapオブジェクトのインスタンスを作成し、http postメソッドで元のデータをnusoapに渡して処理します.簡単に聞こえるでしょう.まずリスト1を見てみましょう.soapfunc.php
<?
require_once(nusoap.php); 
function reverse($str){ 
  $retval = "";
   if(strlen($str) < 1) {
    return new soap_fault(client,,invalid string); 
   }
   for ($i = 1; $i <= strlen($str); $i++) {
      $retval .= $str[(strlen($str) - $i)]; 
   }
  return $retval; 
}

function add2numbers($num1, $num2) {
   if (trim($num1) != intval($num1)) {
      return new soap_fault(client, , the   first number is invalid); 
  }
  if (trim($num2) != intval($num2)) {
    return new soap_fault(client, , the second number is invalid); 
  }
  return ($num1 + $num2); 
}
?>

soapfunc.phpのソースファイル.このファイルには、soapプロトコルを介してwebサービスに暴露したい2つの関数が含まれています.reverseとadd 2 numbersです.これらは私たちのこのwebサービスアプリケーションの核心です.関数reverseにはパラメータがあり、文字列の文字の順序を逆転して返されます.
soapserver.php
<?
require_once(nusoap.php);
include(soapfunc.php);
$soap = new soap_server;
$soap->register(reverse);
$soap->register(add2numbers);
$soap->service($http_raw_post_data);
?>

nusoap登録関数とsoapプロセッサを呼び出す使い方.ご覧の通り、2つの関数を登録します(soapfunc.phpで)、postデータをsoap_serverオブジェクトに転送することは、新しいsoap_serverオブジェクトインスタンスを作成するのと同じように簡単です.soap_serverオブジェクトは、postデータをチェックし、どの関数を呼び出すかを決定し、このphp関数にパラメータを転送します.php関数から返されたデータは、soap応答として再パッケージされ、サービスを要求するsoapクライアントに転送されます.php soapクライアントはnusoapとphpを利用してsoapサーバを作成しました.テストする必要があります.SOapサーバプログラムを構築するように、phpでnusoapを利用してsoapのクライアントプログラムを再構築することができます.リスト3にはphp soapクライアントプログラムのソースプログラムが示されている.nusoapとphpを使用してsoapサーバを作成しました.テストする必要があります.SOapサーバプログラムを構築するように、phpでnusoapを利用してsoapのクライアントプログラムを再構築することができます.リスト3にはphp soapクライアントプログラムのソースプログラムが示されている.
soapclient.php
<?
include(nusoap.php);
$client = new soapclient(http://localhost/soapserver.php);

$str = "this string will be reversed";
$params1 = array(str=>$str);
$reversed = $client->call(reverse,$params1);
echo "if you reverse $str, you get $reversed<br>\n";

$n1 = 5;
$n2 = 14;
$params2 = array(num1=>$n1, num2=>$n2);
$added = $client->call(add2numbers, $params2);
echo "if you add $n1 and $n2 you get $added<br>\n";
?>

1つのsoapサーバでphpクライアントプログラムを使用できるようにするには、3つのことをしなければなりません.まず、soapclientオブジェクトを作成します.soapclientオブジェクトは、パラメータのグループ化とsoapプロトコルの処理を担当します.soapclientにはurlでなければならないパラメータが必要です.このurlは、実際のsoapサーバのhttp端末またはwsdl記述を指すことができる.私たちの例では、php soapサーバのurlを指しています.パラメータが必要な関数を呼び出す場合は、キー値(key-value)ペアのセットを含むパラメータ配列を作成する必要があります.キー(key)はパラメータの名前で、値(value)はパラメータの値です.関数を呼び出す必要がある場合は、soapclientオブジェクトを使用して呼び出し、2つのパラメータを入力します.最初のパラメータは呼び出す関数の名前で、2番目のパラメータはsoap関数に含まれるパラメータの配列で、プライマリコール関数は呼び出したsoap関数の値を返します.この例を実行するには、Webブラウザにsoapclientと簡単に入力します.phpのurl.if you reverse this string will be reversed,you get desrever eb lliw gnirts siht if you add 5 and 14 you get 1 Arrayのような出力になります