PHPではwsdlを利用して標準webserviceの実現コードを作成します。

5152 ワード

1、wsdlの説明を作成します。A、標準ではないwebserviceはPHPでしかB、標準のwebserviceにアクセスできないかもしれません。wsdl(webservice description laguage)を使用しなければなりません。XMLの文法基準であなたのサービス内容を説明します。ここでは標準のwebserviceだけを紹介します。では、どうやってwsdlを作成しますか?PHPにとってこれは確かに大変なことです。zend studioで作成するのが便利だという人もいます。これは一つの方法です。ゼドスタジオが嫌いな人にとっては、webserviceを作るには、ゼドスタジオを設置する必要があると思います。ここでは簡単な方法を紹介します。SoappDiscovery.class.php類をネットでダウンロードします。中には共通の方法があります。getWSDL、この方法の最後に使うreturnがあります。じゃ、この方法を修正してください。私はこうします。wsdlファイルを生成して、上のreturnを注釈します。fso=fopen($this->class_name.「.wsdl」「w」)fwrite($fso、sprintf('%s%s%s%s%s'、$headerWSDL、$portTypeWSDL、$bindingWSDL、$serviceWSDL、');今はwsdlを生成するクラスがあります。Sopsplass.php★。私はもう一つのサービスの種類や関数を用意すれば、wsdlを作成できます。例えば、私はクラスがあります。person、ファイル名は:person.class.php★。中には二つの方法があります。一つはsay、一つはrunです。簡単です
 
<?php
class person
{
public function say()
{
return("i'm speaking.");
}
public function run()
{
return("i'm running,don't disturb me please.");
}
}
?>
からここには二つの種類があります。SoappDiscovery.class.phpとperson.class.php。正式なwsdlの生成を開始します。ファイルserver.phpを作成します。以下の内容をコピーして実行すれば、1つのperson.wsdlファイル
 
<?php
include("person.class.php");
include("SoapDiscovery.class.php");

$disco = new SoapDiscovery('person','Person');// ( wsdl ), person , ( )。
$disco->getWSDL();
?>
、webserviceサービスを作成し、サービス端末プログラムをserver.phpファイルの内容をクリアし、次のコードをコピーして入ることができます。
 
<?php
include("person.class.php");
$objSoapServer = new SoapServer("person.wsdl");//person.wsdl wsdl
//$objSoapServer = new SoapServer("server.php?wsdl");//
$objSoapServer->setClass("person");// person
$objSoapServer->handle();//
?>
、webserviceクライアントプログラムを作成し、webserviceサービスの効果があるかどうかをテストします。簡単でしょうNETを使うなら、彼にurlを提供すればいいです。urlを得る方法:まずperson.wsdlファイルの中で検索してください。http://xxxxxxxxxxxxxxxxxxxx/server.phpここのurl(具体的なurlはあなたのカタログによって確定します)は.NET開発者に提供します。でも、喜ぶのは早いです。wsdl」http://xxxxxxxxxxxxxxxxxxxx/server.php?wsdlこれは正しいです。信じないなら、urlをブラウザのアドレスバーにコピーして見れば分かります。NET開発者はあなたが彼に与えたurlを獲得してから、自分のプロジェクトの中にサービス引用やweb引用を追加できます。そしてヒントによって関連操作を完成することができます。NETの開発者にとっては簡単です。ここでは標準のwebservice一を紹介し、WSDL 1を作成します。Sopsplass.phpクラス2をダウンロードします。Sopsplass.phpの共通方法getWsdl()を修正して、wsdlファイルを自動的に生成させます。ここではwsdlモデル
 
<?php
$client = new SoapClient("person.wsdl");
//$client = new SoapClient("server.php?wsdl");//
echo($client->say());
echo "<br />";
echo($client->run());
echo "<br />";
?>
を作成するだけです。サービスを提供するクラスまたは関数
 
//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');
// wsdl , return
$fso = fopen($this->class_name . ".wsdl" , "w");
fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>'));
exit;
。正式なwsdlの生成を開始します。ファイルserver.phpを作成します。以下の内容をコピーして実行すれば、person.wsdlファイル
 
// :person, :person.class.php★, , say, run。 。
<?php
class person
{
public function say()
{
return("i'm speaking.");
}
public function run()
{
return("i'm running,don't disturb me please.");
}
}
?>
を生成することができます。webserviceサービスを作成し、server.phpファイルの内容をクリアし、以下のコードをコピーして入れます。
 
<?php
include("person.class.php");
include("SoapDiscovery.class.php");
// ( wsdl ), person , ( )。
$disco = new SoapDiscovery('person','Person');
$disco->getWSDL();
?>
。webserviceクライアントプログラムを作成し、webserviceが有効かどうかをテストします。ファイル名は:client.php
  • です。NETを使うなら、彼にurlを提供すればいいです。urlを得る方法:まずperson.wsdlファイルの中で検索してください。http://xxxxxxxxxxxxxxxxxxxx/server.phpここのurl(具体的なurlはあなたのカタログによって確定します)は.NET開発者に提供します。でも、喜ぶのは早いです。wsdl」http://xxxxxxxxxxxxxxxxxxxx/server.php?wsdlこれは正しいです。信じないなら、urlをブラウザのアドレスバーにコピーして見れば分かります。NET開発者はあなたが彼に与えたurlを獲得してから、自分のプロジェクトの中にサービス引用やweb引用を追加できます。そしてヒントによって関連操作を完成することができます。NETの開発者にとっては簡単です。1)ウェブサイトを作成し、ウェブ参照を作成し、url(2)の実力呼び出し
     
    <?php
    include("person.class.php");
    $objSoapServer = new SoapServer("person.wsdl");//person.wsdl wsdl
    //$objSoapServer = new SoapServer("server.php?wsdl");//
    $objSoapServer->setClass("person");// person
    $objSoapServer->handle();//
    ?>
    テストコードhttp://xiazai.jb51.net/201112/yuanma/CreateSoap.rarを入力する。