この記事では、企業の iPhone 6 携帯電話予約インターフェイス開発を例として、PHP5 での SOAP 呼び出しの実装プロセスを紹介します。
1. 基本概念
SOAP (Simple Object Access Protocol) は、分散または分散環境で情報を交換するための単純なプロトコルであり、XML ベースのプロトコルであり、SOAP エンベロープ (エンベロープ)、カプセル化の 4 つの部分で構成されます。メッセージの内容、誰が送信したか、誰が受け入れて処理する必要があるか、アプリケーションがデータの例を使用する必要があることを示すために使用される SOAP エンコード ルール (エンコード ルール) を説明するフレームワークを定義します。タイプ; SOAP RPC 表現。リモート プロシージャの呼び出しと応答のプロトコルを表します。SOAP バインディングは、基礎となるプロトコルを使用して情報を交換します。
WSDL (Web サービス記述言語) は、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 で、
extension=php_soap.dll
を見つけて先頭の「;」記号を削除し、Web サービスを再起動します
3. Web サービスのメソッド、パラメータ、およびデータ型
地方の電気通信会社の注文入力インターフェイスは http://***.ct10000.com/services/AcceptedBusiness?wsdl です
SoapClient の __geunctions() メソッドと __getTypes() メソッドを使用してメソッドを表示します。パラメーターとデータ型
__getFunctions にリストされているインターフェイスのみが、soap によって呼び出すことができます。
ルート ディレクトリにコード soap.php を作成します
<?phpheader("content-type:text/html;charset=utf-8");try { $client = new SoapClient("http://***.ct10000.com/services/AcceptedBusiness?wsdl"); print_r($client->__getFunctions()); print_r($client->__getTypes()); } catch (SOAPFault $e) { print $e;}?>
ブラウザで実行すると、http://localhost/soap.php、返される結果は次のようになります
配列
(
[0] => ArrayOf_xsd_anyType recruitAcceptedBusiness(string) $c3, string $c4, string $linkman, string $linknum, string $num, string $idcard, string $remark, string $address)
[1] => ArrayOf_xsd_anyType導入AcceptedBusinessByAiZhuangWei(string $subname, string $linkphone, string $idcard、string $address、string $businesstype、string $marketcode、string $surveycode、string $commanager、string $commanagerphone、string $bendiwang、string $fenju、string $zhiju、string $remark)
[2] =>文字列installedAcceptedBusinessByStandardInterface(string $xmlStr)
[3] => 文字列introducedAcceptedBusinessByCallOut(string $xmlStr)
[4] => 文字列installedAcceptedBusinessByYddj(string $xmlParam)
[5] => ArrayOf_xsd_anyType queryAcceptedBusinessByAiZhuangWei(string $starttime, string $endtime)
[6] => string queryCallOutOrderByConfig(string $xmlParam)
)
Array
(
[0] => anyType ArrayOf_xsd_anyType[]
)
メソッド導入受け入れ済みBusinessByStandardInterface(string $x)がありますmlStr) は、使用するインターフェイスが開発ドキュメントに記載されており、パラメーターは XML 文字列です
さらに、一部のインターフェイスでは SoapHeader 認証について言及されており、これには __setSoapHeaders メソッドの追加が必要です。詳細については、http://php を参照してください。 .net/manual/zh /soapclient.setsoapheaders.php
4. 注文を送信します
このステップでは、開発ドキュメントに従って XML 文字列を結合し、それを includeAcceptedBusinessByStandardInterface のパラメーターとして渡す必要があります
次のコマンドを使用して、acceptedbusiness.php を作成します以下の内容
<?phpheader("content-type:text/html;charset=utf-8");try { $client = new SoapClient('http://***.ct10000.com/services/AcceptedBusiness?wsdl'); $xml = " <?xml version='1.0' encoding='UTF-8' ?> <PACKAGE> <C3>**电信</C3> <C4></C4> <LINKMAN>张三</LINKMAN> <LINKNUM>13412341234</LINKNUM> <LINKADDRESS>广东深圳</LINKADDRESS> <REMARK>iPhone 6</REMARK> <CHANNEL></CHANNEL> <GRIDCODE>1111111111111111111111111111111</GRIDCODE> <AGENTCODE>2111</AGENTCODE> <KEY>1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111</KEY> </PACKAGE> "; $return = $client->introduceAcceptedBusinessByStandardInterface($xml); print_r($return);} catch (SOAPFault $e) { print_r('Exception:'.$e);}?>
をブラウザで実行後、
<?xml version="1.0" encoding="UTF-8"?><PACKAGE> <STATUS>0</STATUS> <REASON>入单成功!</REASON> <ORDERSEQ>2014100905523549742</ORDERSEQ></PACKAGE>
を返します