php webservice SOAP
インタフェースを公開するために、他のアプリケーションに呼び出されると、SOAP側を作成する必要があることがよくありますが、PHPでは、SOAPの使用はPHP 4から広く使用されており、オープンソースの例えばnosoapは良いSOAP類であり、PHP 5からSOAPをサポートしています.php_soap.dll(必要に応じて、PHP 5+のPHP.INIのSOAP拡張が開いていることを確認し、phpinfo()にSOAP拡張が表示されます.)
SOAPの使用には、次の3つのステップがあります.
1:実際に実行する必要があるプログラムを作成し、現在の時間をクエリーするなどの関数に戻ります.現在の時間を取得する関数を作成します(soapfunction.phpに保存できます):
2:次にSOAPServerを作成します(soapserver.phpで作成できます):
以上のコードの最初の行はsoapが実行するファイルを含んで、2番目の行はSoapServerクラスを作成して、このクラスの最初のパラメータはwsdlで、2番目のパラメータはuriで、phpは現在wsdlの自動生成をサポートしていません.この構造関数は最初のパラメータがnullで、2番目が必須で、2番目のパラメータはネーミングスペースです.これは、インターネットWebServerの一貫性と開発の一貫性を保証するために発生したもので、存在するかどうかにかかわらず、任意のアドレスを書き込むことができます.
3:クライアントアクセス(soapclient.phpを作成できます):
ここで1行目にSoapClentが作成されます.1番目のパラメータはwsdlです.nullです.2番目のパラメータには名前空間(uri)が含まれている必要があります.この2つのパラメータはアクセスする必要があるSoapServerと一致し、実行アドレス(location)はSoapServerのphpアクセス先です.
SOapclient.へのアクセスphp、戻ります(類似):
if you reverse This string will be reversed,you get desrever eb lliw gnirts sihT
if you try 20 + 33 ,you will get 53
The system time is :2009-01-22 03:32:55
SOAPの使用には、次の3つのステップがあります.
1:実際に実行する必要があるプログラムを作成し、現在の時間をクエリーするなどの関数に戻ります.現在の時間を取得する関数を作成します(soapfunction.phpに保存できます):
<?
/* client */
function reverse($str) {
$retval='';
if(strlen($str)<1) {
return new SoapFault('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 SoapFault('Client','','The first number is invalid');
}
if(trim($num2) != intval($num2)) {
return new SoapFault('Client','','The second number is invalid');
}
return ($num1+$num2);
}
function gettime() {
$time = date('Y-m-d H:i:s',time());
return $time;
}
?>
2:次にSOAPServerを作成します(soapserver.phpで作成できます):
<?
// SoapServer , , handle() soap
include_once('soapfunc.php');
$soap = new SoapServer(null, array('uri'=>"httr://test-rui"));
$soap->addFunction('reverse');
$soap->addFunction('add2numbers');
$soap->addFunction('gettime');
$soap->addFunction(SOAP_FUNCTIONS_ALL);
$soap->handle();
?>
以上のコードの最初の行はsoapが実行するファイルを含んで、2番目の行はSoapServerクラスを作成して、このクラスの最初のパラメータはwsdlで、2番目のパラメータはuriで、phpは現在wsdlの自動生成をサポートしていません.この構造関数は最初のパラメータがnullで、2番目が必須で、2番目のパラメータはネーミングスペースです.これは、インターネットWebServerの一貫性と開発の一貫性を保証するために発生したもので、存在するかどうかにかかわらず、任意のアドレスを書き込むことができます.
3:クライアントアクセス(soapclient.phpを作成できます):
<?
/*this is client ---test page*/
try {
$client = new SoapClient(null,array('location'=>"http://localhost/soap/soapserver.php",'uri'=>"http://test-uri"));
$str="This string will be reversed";
$reversed = $client->reverse($str);
echo "if you reverse $str,you get $reversed";
$n1=20;
$n2=33;
$sum = $client->add2numbers($n1,$n2);
echo "<br>";
echo "if you try $n1 + $n2 ,you will get $sum";
echo "<br>";
echo "The system time is :".$client->gettime();
}
catch(SoapFault $fault) {
//echo "Fault!code:".$fault->faultcode." string:".$fault->faultstring;
}
?>
ここで1行目にSoapClentが作成されます.1番目のパラメータはwsdlです.nullです.2番目のパラメータには名前空間(uri)が含まれている必要があります.この2つのパラメータはアクセスする必要があるSoapServerと一致し、実行アドレス(location)はSoapServerのphpアクセス先です.
SOapclient.へのアクセスphp、戻ります(類似):
if you reverse This string will be reversed,you get desrever eb lliw gnirts sihT
if you try 20 + 33 ,you will get 53
The system time is :2009-01-22 03:32:55