ホームページ > バックエンド開発 > PHPチュートリアル > PHP SOAP Web サービスは SoapDiscovery.class.php を使用して wsdl ファイルを生成します、_PHP チュートリアル

PHP SOAP Web サービスは SoapDiscovery.class.php を使用して wsdl ファイルを生成します、_PHP チュートリアル

WBOY
リリース: 2016-07-12 08:54:33
オリジナル
1317 人が閲覧しました

PHP SOAP Web サービスは SoapDiscovery.class.php を使用して wsdl ファイルを生成します。

PHP SOAP Web サービスは wsdl ファイルを使用しますデモ:

================================================ === =============

サーバー:

wsdl の SOAP Web サービス デモを使用する前に、まず cw.php ファイルを使用して wsdl ファイルを生成します。コードは次のとおりです。

cw.php:

リーリー

service.php:

リーリー

soapHandle.class.php :

リーリー

SoapDiscovery.class.php コードは次のとおりです:

================================================ === ==========

PHP SOAP Web サービスは SoapDiscovery.class.php を使用して wsdl ファイルを生成します、_PHP チュートリアルphp /** * 著作権 (c) 2005、Braulio Jos?Solano Rojas * 無断転載を禁じます。 * * 改変の有無にかかわらず、ソースおよびバイナリ形式での再配布および使用は禁止されています。 * 以下の条件が満たされる場合に許可されます。 * * ソース コードを再配布する場合は、上記の著作権表示、このリストを保持する必要があります。 ※条件および以下の免責事項がございます。 * バイナリ形式で再配布する場合は、上記の著作権表示、このリストを複製する必要があります。 * ドキュメントおよび/またはその他の資料における条件および以下の免責事項 * ディストリビューションに同梱されています。 * Solsoft de Costa Rica S.A. の名前もその貢献者の名前も掲載することはできません。 * このソフトウェアから派生した製品を、具体的な内容を明示せずに推奨または宣伝するために使用されます。 * 事前の書面による許可。 * ※このソフトウェアは著作権者によって提供されており、 * 寄稿者は「現状のまま」で、明示的または黙示的な保証を行います。 * 黙示の保証を含みますが、これに限定されません。 *商品性と特定の目的への適合性は、 * 免責事項。いかなる場合も、著作権所有者または * 貢献者は、あらゆる直接的、間接的、偶発的、 * 特別損害、例示的損害、または結果的損害(以下を含む) * 代替品またはサービスの調達に限定されません。 * 使用、データ、または利益の損失。または業務中断) * 原因がどのようなものであっても、責任理論に基づくものであっても、 * 契約、厳格責任、または不法行為 (過失または過失を含む) *そうでない場合) このソフトウェアの使用から何らかの形で生じた場合、 * たとえそのような損害の可能性について知らされていた場合でも。 * * * @version $Id$ * @copyright 2005 */ /** * SoapDiscovery Web サービス定義言語 (WSDL) を提供するクラス。 * * @パッケージSoapDiscovery * @author Braulio Jos?Solano Rojas * @copyright Copyright (c) 2005 Braulio Jos?Solano Rojas * @version $Id$ * @アクセスパブリック **/ クラス SoapDiscovery { プライベート $class_name = ''; プライベート $サービス名 = ''; /** * SoapDiscovery::__construct() SoapDiscovery クラスのコンストラクター。 * * @param string $class_name * @param string $service_name **/ public function __construct($class_name = '', $service_name = '') { $this->クラス名 = $クラス名; $this->サービス名 = $サービス名; } /** * SoapDiscovery::getWSDL() クラスがインスタンス化可能な場合は、クラスの WSDL を返します。 * * @戻り文字列 **/ パブリック 関数 getWSDL() { if (($this->service_name)) { throw new Exception('サービス名がありません。'); } $headerWSDL = "n"; $headerWSDL.= "<定義名="$this->service_name" targetNamespace="urn:$this->service_name" xmlns:wsdl="http://schemas.xmlsoap. org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:$this->サービス名" xmlns:xsd="http:// www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/">ん」; $headerWSDL.= "n"; if (($this->class_name)) { throw new Exception('クラス名がありません。'); } $class = new ReflectionClass($this->class_name); if (!$class->isInstantiable()) { throw new Exception('クラスはインスタンス化できません。'); }$methods = $class->getMethods(); $portTypeWSDL = ''; $bindingWSDL = '<バインディング名="'.$this->service_name.'Binding" type="tns:'.$this->service_name."ポート">n< soap:binding style="rpc" Transport="http://schemas.xmlsoap.org/soap/http" />n"; $serviceWSDL = '<サービス名="'.$this->service_name."">n<ドキュメント />n<ポート名="".$this->service_name .'ポート" バインディング="tns:'.$this->service_name."バインディング">$_SERVER['SERVER_NAME'].' :'.$_SERVER['SERVER_PORT'].$_SERVER['PHP_SELF']."" />nnn"; $messageWSDL = ''; foreach ($methods as $method) { if ($method->isPublic() && !$method->isConstructor()) { $portTypeWSDL.= '<オペレーション名="'.$method->getName()."">n".'n<出力メッセージ="tns:".$method->getName()."Response" />nn"; $bindingWSDL.= 'n".'$this ->service_name.'#'.$this->class_name.'#'.$method->getName()."" />nnnnnnn"; $messageWSDL.= '<メッセージ名="'.$method->getName()."リクエスト">n"; $parameters = $method->getParameters(); foreach ($parameters as $parameter) { $messageWSDL.= 'n"; } $messageWSDL.= "n"; $messageWSDL.= '<メッセージ名="'.$method->getName()."Response">n"; $messageWSDL.= 'n"; $messageWSDL.= "n"; } } $portTypeWSDL.= "n"; $bindingWSDL.= "n"; //return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, ''); $fso = fopen($this->class_name . ".wsdl", "w"); fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '')); } /** * SoapDiscovery::getDiscovery() WSDL の検出を返します。 * * @戻り文字列 **/ パブリック 関数 getDiscovery() { return "nn$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT']。 $_SERVER['PHP_SELF']."?wsdl" />n"; } } ?> コードを表示

客户端:

client.php 代码:

=============================================================

<?<span>php
    </span><span>ini_set</span>('soap.wsdl_cache_enabled', "0"); <span>//</span><span>关闭wsdl缓存</span>


    <span>$soap</span> = <span>new</span> SoapClient('http://localhost/soap/service.php?wsdl'<span>);
    </span><span>echo</span> <span>$soap</span>->strtolink('http://www.baidu.com')."<br/>"<span>;
    </span><span>echo</span> <span>$soap</span>->add(28, 100)."<br/>"<span>;
    </span><span>echo</span> <span>$soap</span>->__soapCall('add',<span>array</span>(28,200))."<br/>"<span>;
    </span><span>//</span><span>或这样调用</span>
    <span>echo</span> <span>$soap</span>->__Call('add',<span>array</span>(28,300))."<br/>"<span>;
    </span><span>echo</span> <span>date</span>('Y-m-d H:i:s', <span>time</span><span>());

</span>?>
ログイン後にコピー

 

================ END====================

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1119777.htmlTechArticlePHP soap Web Service 使用SoapDiscovery.class.php 生成wsdl文件, PHP soap web service 使用wsdl文件 demo: ============================================================== 服...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート