検索

SOAPとは英語で「石鹸」を意味します。しかし、このことは、過去数年間で「Web サービス」という概念が大々的に宣伝された後、SOAP が Web サービスの実装の先駆けとなったため、その成果または「遺産」となっています。
SOAP = シンプル オブジェクト アクセス プロトコル、シンプル オブジェクト アクセス プロトコル。これは、構造化および固定化された情報を WEB 上で交換するために設計された、軽量でシンプルな XML ベースのプロトコルです。 SOAP は、ハイパーテキスト転送プロトコル (HTTP)、簡易メール転送プロトコル (SMTP)、多目的インターネット メール拡張機能 (MIME) など、多くの既存のインターネット プロトコルおよび形式と組み合わせて使用​​できます。また、メッセージング システムからリモート プロシージャ コール (RPC) まで、幅広いアプリケーションをサポートします。
SOAP プロトコルを通じて実装された Web サービスにより、世界中のプログラマーによって作成されたクラスと関数を集めて、言語に依存しない巨大な関数ライブラリを構築できます。これは、ネットワークが接続されている限り、これまでのプロセス間、マシン間、ネットワーク間通信の問題がすべて解決された、ソフトウェア業界の輝かしい発展の展望を示しています。 http このプロトコルはファイアウォールを通過できます (実際、ファイアウォールは一般に http プロトコルのポート 80 をブロックしません。ブロックしないと誰もインターネットにアクセスできなくなります)。
多くの人がこのテクノロジーについて非常に楽観的であり、「エキサイティング」であると言うのも不思議ではありません。Web サービスは実装が非常に簡単で、今日のインターネット上の無数の Web プラットフォームに基づいて簡単に公開できます。多くの場合、シンプルであることが最も美しく、Web サービスはその実用的な例です。
PHP では、php.ini ファイルで php_soap.dll 拡張機能を有効にすると、SOAP をサポートできます。
SOAP 拡張ライブラリには、主に 3 種類のオブジェクトがあります。
1. SoapServer
PHP サーバーサイドページを作成するときに呼び出して応答データを返すことができる関数を定義するために使用されます。 SoapServer オブジェクトを作成するための構文形式は次のとおりです:
$soap = new SoapServer($wsdl, $array)
このうち $wsdl は shoep が使用する wsdl ファイルで、wsdl は Web サービスを記述するための標準形式です。 if $wsdl wsdl モードを使用しない場合は null に設定します。 $array は SoapServer の属性情報であり、配列です。
SoapServer オブジェクトの addFunction メソッドは、クライアントがどの関数を呼び出すことができるかを宣言するために使用されます。構文形式は次のとおりです:
$soap->addFunction($function_name);
このうち、$soap は SoapServer オブジェクトです。 、$function_name 関数名を呼び出す必要があります。
SoapServer オブジェクトの handle メソッドは、ユーザー入力を処理して対応する関数を呼び出し、最終的に処理結果をクライアントに返すために使用されます。構文形式は次のとおりです:
$soap->handle([$soap_request]);
このうち、$soap は SoapServer オブジェクトで、$soap_request はユーザーのリクエスト情報を表すために使用されるオプションのパラメーターです。 $soap_request が指定されていない場合、サーバーはユーザーからのすべてのリクエストを受け入れることを意味します。
2. SoapCliet
は、リモート サーバー上の SoapServer ページを呼び出すために使用され、対応する関数への呼び出しを実装します。 SoapClient オブジェクトを作成するための構文形式は次のとおりです:
$soap = new SoapClient($wsdl,$array);
このうち、パラメータ $wsdl と $array は SoapServer と同じです。
SoapClient オブジェクトを作成した後、サーバー ページで関数を呼び出すことは、SoapClient メソッドを呼び出すことと同じです。 作成構文は次のとおりです:
$soap->user_function($params);
このうち、$soap は SoapClient です。 object と user_function はサーバーです。呼び出される関数、$params は関数に渡されるパラメータです。
3. SoapFault
SoapFault は、SOAP アクセス中に発生する可能性のあるエラーを生成するために使用されます。 soapFault オブジェクトを作成するための構文形式は次のとおりです:
$fault = new SoapFault($faultcode,$faultstring);
このうち、$faultcode はユーザー定義のエラー コード、$faultstring はユーザー定義のエラー メッセージです。 。 soapFault オブジェクトは、サーバー側のページでエラーが発生したとき、またはユーザーが SoapFault オブジェクトを作成したときに自動的に生成されます。 Soap アクセス中に発生したエラーの場合、クライアントは SoapFalut オブジェクトをキャプチャすることで、対応するエラー情報を取得できます。
クライアントで SoapFault オブジェクトをキャプチャした後、次のコードを通じてエラー コードとエラー情報を取得できます:
$fault->faultcode;//エラー コード
$fault->faultstring;//エラー情報
ここで, $fault 前に作成した SoapFault オブジェクトです。
例:
文例soapfunc.php:

/* 几个供給クライアント端调用関数 */
function reverse($str)
{
$retval='';
if(strlen($str) {
return new SoapFault('Client','','Invalid string');
}
for($i=1; $i {
$retval .= $str[(strlen($str)-$i)];
}
return $retval;
}
function add2numbers($num1, $num2)
{
if(trim($num1) != intval($num1))
{
return new SoapFault('Client','','最初の番号は無効です');
}
if(trim($num2) != intval($num2))
{
return new SoapFault('Client','','2 番目の数値は無効です');
}
return ($num1+$num2);
}
function gettime()
{
$time = date('Y-m-d H: i:s',time());
return $time;
}
?>
文件soapclsoapserverient.php 内容:

//先创建一SoapServer对オブジェクト例,その後将我们要公開関数数注册,
//最後のhandle()用来処理受理soap请求
include_once('soapfunc.php');
error_reporting(7); //正式公開時、設定は0
date_default_timezone_set('PRC'); //設置時間区
$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();
?>
文ファイルsoapclient .php 内容:

error_reporting(7);
try
{
$client = new SoapClient(null, array('location'=>"http://localhost:8080/_myPHP5/soap/soapserver. php", 'uri'=>"http://test-uri"));
$str="この文字列は反転されます";
$reversed = $client->reverse($str);
echo "'$str' を逆にすると、'$reversed' が得られます。";
$n1 = 20;
$n2 = 33;
$sum = $client->add2numbers($n1,$n2);
echo "
";
echo "$n1 + $n2 を試すと、$sum が得られます";
echo "
";
echo "remoye システム時間は次のとおりです: ".$client-> ;gettime();
}
catch(SoapFault $fault)
{
echo "Fault! code:" 。 $fault->faultcode 。 " 弦:" 。 $fault->faultstring;
}
?>

PHP では、WSDL を介した Web サービスの配布も実現されています。对每个Webサービス务来

WSDL ファイルは、Web サービスの位置、プロトコル、およびインターフェイスを詳細に説明するための説明ドキュメントであり、Web サービスの発行者によって提供されます。

1 タイプ定義: 言語に依存しないタイプ定義。SOAP メッセージで送信される要素情報の定義に対応します。
2 メッセージ: 各 Web メソッドは、ヘッダーと出力の 2 つのメッセージ定義に対応します。 body
3 PortType: 各 Web サービスは PortType に対応し、それに公開されるメソッドとオペレーションも含まれます。
4 Bindings: 入力の形式を含む、各ポートタイプの各オペレーション (クラスとメソッド) のバインディング情報を指定します。
5 サービス: 各 Web サービスにバインドされたポート情報

前述の例に従って公開することに加えて、Web サービスは WSDL ドキュメントを通じて公開することもできます。

例:

公開するクラス、ファイル myservice.php:
class service
{
public function HelloWorld()
{
return "Hello";
}
public function Add($a, $ b)
{
return $a+$b;
}
}

$server=new SoapServer('TestSoap.wsdl',array('soap_version' => SOAP_1_2));
$server->setClass( "サービス");
$server->handle();
?>

WSDL 記述ドキュメント、ファイル TestSoap.wsdl:

targetNamespace="urn:TestSoap"
xmlns:typens="urn:TestSoap"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns : soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http:// スキーマ.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/">






















































> ;

定義>

コードの呼び出し、ファイル Client.php:

error_reporting(7);

$client = new SoapClient("http://localhost:8080/_myPHP5/soap/Wsdl/TestSoap.wsdl");
echo $client->HelloWorld() ;
echo("
");
echo $client->Add(10, 20);
?>

しかし、WSDL ドキュメントの作成は非常に面倒で、退屈で間違いが発生しやすいものです。多くの人は、このようなものは人間によって書かれたものではないと考えていますが、優れたソフトウェア ツールがあれば、このようなものは人間によって書かれる必要はありません。 Zend の ZED 5.0 シリーズと Zend Studio for eclipse 6.0 は当初、WDSL ビジュアル編集とクラス パブリッシング (クラス ファイルに従ったインテリジェントな生成) をサポートしていましたが、Zend Studio 7.0 以降、この機能は弱められました。ただし、Eclipse 上に構築されている Zend Studio 7.x には WSDL ビジュアル エディタが搭載されており、生成された WSDL の機能は十分です。 ファイルには以前から若干の変更が加えられています。プログラマは、WSDL ドキュメントのタグと要素に精通している必要があります。

付録: PHP SOAP 開発に関するいくつかのエラー

1. 開発中は、必ず PHP SOAP のキャッシュをオフにしてください。サーバーとクライアントの両方でそれが必要です。そうしないと、次のエラーが報告されます:

致命的なエラー: Uncaught SoapFault 例外: [クライアント] 関数 ("test") は……clien.php:5 のこのサービスの有効なメソッドではありませんスタック トレース:
#0 [内部関数]: SoapClient->__call('test', Array )
#1 D:xampphtdocsclien .php(5): SoapClient->test()
#2 {main}

Close メソッド:
ini_set("soap.wsdl_cache_enabled", "0");

渡すことができます$client->__getFunctions( ) やその他の Soap に関する情報を表示するメソッドのようなもの。


2. デバッグ中に XML を認識できないというエラーが報告された場合は、コード内にスペースやその他の無関係な情報 (Utf-8 でエンコードされたファイルの BOM ヘッダーなど) が含まれていないことを確認してください。

著者: Zhang Qing (ネットワーク) 西安 PHP 教育訓練センター 2010-7-11
「ネットワーク ビジョン」より: http://blog.why100000.com
著者 Weibo: http://t.qq. com/ zhangking
「十万なぜ」コンピュータ学習ウェブサイト: http://www.why100000.com


上記では、PHP での SOAP の使用法をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションの概念を簡単に説明してください。PHPセッションの概念を簡単に説明してください。Apr 26, 2025 am 12:09 AM

phpssionsStrackuserdataacrossmultiplepagerequestsusingauniqueidstoredinacookie.here'showtomanageetheemefectively:1)Startassession withsession_start()andstoredatain $ _ session.2)RegeneratesseSsessidafterloginwithsession_id(the topreventes_id)

PHPセッションに保存されているすべての値をどのようにループしますか?PHPセッションに保存されているすべての値をどのようにループしますか?Apr 26, 2025 am 12:06 AM

PHPでは、次の手順を通じてセッションデータを繰り返すことができます。1。session_start()を使用してセッションを開始します。 2。$ _Sessionアレイのすべてのキー価値ペアを介してforeachループを反復します。 3.複雑なデータ構造を処理する場合、is_array()またはis_object()関数を使用し、print_r()を使用して詳細情報を出力します。 4.トラバーサルを最適化する場合、ページングを使用して、一度に大量のデータの処理を避けることができます。これにより、実際のプロジェクトでPHPセッションデータをより効率的に管理および使用するのに役立ちます。

ユーザー認証にセッションを使用する方法を説明します。ユーザー認証にセッションを使用する方法を説明します。Apr 26, 2025 am 12:04 AM

このセッションは、サーバー側の状態管理メカニズムを介してユーザー認証を実現します。 1)セッションの作成と一意のIDの生成、2)IDはCookieを介して渡されます。3)サーバーストアとIDを介してセッションデータにアクセスします。

PHPセッションにユーザーの名前を保存する方法の例を挙げてください。PHPセッションにユーザーの名前を保存する方法の例を挙げてください。Apr 26, 2025 am 12:03 AM

tostoreauser'snameInappession、starthessession withsession_start()、thensignthenameto $ _session ['username']。1)ousession_start()toinitializethessession.2)assighttheuser'snameto $ _ session ['username']

PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター