ホームページ > バックエンド開発 > PHPチュートリアル > PHP5 での SOAP 呼び出しの実装プロセス、php5soap call process_PHP チュートリアル

PHP5 での SOAP 呼び出しの実装プロセス、php5soap call process_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:16:59
オリジナル
984 人が閲覧しました

PHP5 での SOAP 呼び出しの実装プロセス、php5soap 呼び出しプロセス

この記事では、企業の iPhone 6 携帯電話予約インターフェイス開発を例として、PHP5 での SOAP 呼び出しの実装プロセスを紹介します。


1. 基本概念

SOAP (Simple Object Access Protocol) シンプル オブジェクト アクセス プロトコルは、分散環境で情報を交換するためのシンプルなプロトコルであり、次の 4 つの部分で構成されています。 SOAP エンベロープ (エンベロープ)。メッセージの内容、送信者、受信者と処理方法、およびアプリケーションが使用する必要があるデータ型のインスタンスを表すために使用される SOAP エンコード ルール (エンコード ルール) を説明します。 RPC 表現) は、リモート プロシージャの呼び出しと応答のプロトコルを表します。SOAP バインディング (バインディング) は、基礎となるプロトコルを使用して情報を交換します。

WSDL (Web Service description Language) は、Ariba、Intel、IBM、Microsoft などの開発者によって提案された、XML Web サービスを記述するための標準 XML 形式です。これは、特定の言語に依存しない抽象的な方法で、特定の Web サービスによって送受信される関連する操作とメッセージを定義します。その定義上、WSDL をオブジェクト インターフェイス定義言語として考えることはできません。たとえば、CORBA や COM などのアプリケーション アーキテクチャはオブジェクト インターフェイス定義言語を使用します。 WSDL はプロトコル中立性を保ちますが、SOAP へのバインディングのサポートが組み込まれているため、SOAP との切り離せないリンクが確立されます。したがって、この記事で WSDL について説明するときは、通信プロトコルとして SOAP を使用していることを前提とします。

SOAP と WSDL は Web サービスの 2 つの主要な標準ですが、必ずしも接続されているわけではなく、独立して使用することもできます。それらの間の関係は、HTTP と Html の関係に似ています。前者はプロトコル、後者は Web サーバーの記述です。


2. PHP5での設定

PHP 構成ファイル php.ini で、

を見つけます。 リーリー

次に、前にある「;」記号を削除して、Webサービスを再起動します

3. Web サービスのメソッド、パラメーター、データ型をクエリする

地方の電気通信会社の注文入力インターフェイスは http://***.******.com/services/AcceptedBusiness?wsdl です
SoapClient の __geunctions() メソッドと __getTypes() メソッドを使用して、インターフェース メソッド、パラメーター、およびデータ型
__getFunctions にリストされているインターフェースのみが、soap によって呼び出すことができます。
ルートディレクトリにコードsoap.phpを作成します

リーリー

ブラウザで http://localhost/soap.php を実行すると、返される結果は次のようになります

リーリー

開発ドキュメントに記載されている使用するインターフェースとなるメソッド導入AcceptedBusinessByStandardInterface(string $xmlStr)があり、パラメータはXML文字列です

さらに、一部のインターフェイスでは SoapHeader 認証について言及されており、これには __setSoapHeaders メソッドを追加する必要があります。詳細については、http://php.net/manual/zh/soapclient.setsoapheaders.php を確認してください。

4. 注文を送信します

このステップでは、開発ドキュメントに従って XML 文字列を結合し、それを導入 AcceptedBusinessByStandardInterface のパラメーターとして渡します

次の内容で acceptbusiness.php を作成します
リーリー

ブラウザで実行後、戻る

リーリー

PHP Webサービスとは

nusoap と比較した場合、soap の利点の 1 つは、nusoap が完全に PHP 言語で書かれており、一連の PHP クラスで構成されているのに対し、C で開発され、php の内部関数ライブラリにコンパイルされていることです。 2 番目の利点は、nusoap はかなり前から存在していましたが、php5 バージョンで追加されたため、関数ライブラリとしての Soap の地位が確実になったことです。上昇し続けます。

php5 の Soap 関数ライブラリは非常に使いやすく、zend 開発環境の開発ツールを使用して wsdl を生成できます。
いくつかの問題に注意してください:
1. 効率を向上させるために、PHP は wsdl ファイルを無効にするための ini_set("soap.wsdl_cache_enabled", 0); を使用できます。ファイル;

2. SOAP (Simple Object Access Protocol) シンプル オブジェクト アクセス プロトコル。php5 では、リモート アクセス呼び出し用のオブジェクト setClass を提供するだけでなく、メソッド addFunctions も提供します。つまり、SOAP の「O」が拡張されました。

3. サーバーはクライアントからデータ POST を取得できない可能性があります。これは php5 SOAP 関数のバグである可能性があります。解決策は、以下のサーバー サンプル プログラムのコードです。 )) {
$request = $HTTP_RAW_POST_DATA;
} else {
$request = file_get_contents('php://input');
}
以下はプログラムのソースコードの例です。

SOAP クライアントの例:


ini_set("soap.wsdl_cache_enabled", 0);
try{
$soap = new SoapClient('authenticate/idolol.wsdl');
$soap-> ; get_avatar(230);
$functions = $soap->__getFunctions();
print_r($functions);
$types = $soap->__getTypes();
print_r($types);
}catch( SoapFault $fault){
trigger_error("SOAP フォールト: (フォールトコード: {$fault->faultcode}, フォールト文字列: {$fault->faultstring})", E_USER_ERROR);
}

?>

soap サーバー例:


require './soap_functions.php';

ini_set("soap.wsdl_cache_enabled", 0);

$server = new SoapServer('authenticate/idolol.wsdl', array( 'encoding'=>'UTF-8'));
$server->addFunction(array("user_login","se...残りのテキスト>>

php SoapClientを使用せずにWebサービス関数を呼び出す他の方法はありますか?

Web サービスには多くの種類がありますが、SoapClient を使用して呼び出されるのは SOAP タイプの Web サービスのみです。


実際、SoapClient は SOAP リクエストをカプセル化したものです。基盤となるインターフェースを使用してアクセスすることもできますが、これには SOAP プロトコルを理解する必要があり、非常に面倒です。

SOAPサービスやSOAPリクエストを簡単に書けるnusoapというライブラリについて学ぶことができます。

採用していただければ幸いです、ご支援ありがとうございます!

http://www.bkjia.com/PHPjc/894769.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/894769.html技術記事 PHP5 での SOAP コールの実装プロセス、php5soap コール プロセス この記事では、企業の iPhone 6 携帯電話予約インターフェイスの開発を例として、PHP5 での SOAP コールの実装プロセスを紹介します。 1. 基本概念 SOAP (...
)
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート