ホームページ >バックエンド開発 >C#.Net チュートリアル >.NET を使用して PHP Web サービスを呼び出す一般的な例
最近のプロジェクトは、「DB2 に直接アクセスする WinForm」から「PHP Web サービスを介して DB2 にアクセスする WinForm」に移植されました。
(利点は、PHP を Linux 上で実行でき、Linux は無料であることです)
この提案の難しさは、DB2 にアクセスするのではなく、.NET が PHP の Web サービスを呼び出すことです。長年 .NET に取り組んできて、Web サービスは .NET でしかできない…と思っていた私にとって、これは非常に難しいです。
しかし、問題はまだ解決する必要があり、期限は目の前にあります。いくつかの調査の結果、ついに手がかりが得られたので、今回はそれを共有します。
まず、PHP サーバーには少なくとも 2 つのファイル (WSDL ファイルと PHP ファイル) が必要です。 WSDL ファイルは、WebService によって提供されるサービスと呼び出しメソッドを記述するために使用される機械可読 XML ファイルです (.NET の場合、呼び出しコードは自動的に生成されるため、非常に使いやすいのが実際の php ファイルです)。ウェブサービス。
1) PHPサーバーサイドコード
1-1) TestWebService.phpコード
以下引用内容:
class TestWebService
{
public function HelloWorld()
{
return array (" HelloWorldResult"=>"Hello"); }
to;
return array("GetArrayResult"=>$arry);
}
}
//WebSeviceインスタンスを作成
$server = new SoapServer("TestWebService.wsdl");
$server -> ;setClass("TestWebService");
$server->handle();
1-2) TestWebService.wsdl コード
以下は引用内容です:
< /s:要素&gt;
&lt; s:要素名= "getArray"&gt;
&lt; s:complexType&gt;
&lt; s:sequence&gt;
&lt; s:element minoccurs = "0" maxoccurs = "1" name = = " "value1" type="s:string" />
< ;/wsdl:message>
< /wsdl:operation>
< ;wsdl:サービス名="TestWebService">
WSDL コードは、メソッドが多数ある場合、手でコードを入力するのは不可能です。賢い方法があります。それは、.NET を使用して実際のメソッド本体を使用せずに Web サービスを実装し、次に http://***/TestWebService.asmx? を使用することです。 wsdl メソッドは、wsdl コード ファイルを生成します。
WSDL ファイルに関して、2 つの特別な点を説明したいと思います。
(1) soap:address ノードは WebService が宣言されているアドレスであり、デプロイメント中に対応するアドレスに変更する必要があります
(2) 1 次元配列の宣言型は ArrayOfType、文字列配列は ArrayOfString です。 Type が単純型ではない場合、Type を個別に宣言する必要があります。
2) .NET クライアント コード
まず、Web 参照を追加します。アドレスは WSDL ファイルの Http アドレスです。コードを呼び出します (C#)
以下は参考内容です:
// webService を初期化します
LocalHost.testWebService SRV = New LocalHost.testwebService () ( ;);配列型も一般的に理解されている配列とは異なります。また、使用法も Hashtable と似ています。
(2) 実際に呼び出されたときのパラメータと戻り値はすべてオブジェクトにパッケージ化されて送信されるため、PHP Web サービス メソッドは最大 1 つの受信パラメータと戻り値を持つことができます。
(3) PHP Web サービスは、カスタム型やカスタム型配列などの複合型もサポートしますが、複数の配列はサポートしません。
(4) 戻り値が複数の 2 次元テーブルである必要がある場合、形式は
[表2の行番号]、[表2の列番号]、[表2の列名1]、[表2の列名2]、…[表2の列名N]、[表2の格納値]行と列]
...
[テーブル M 行番号]、[テーブル M 列番号]、[テーブル M 列名 1]、[テーブル M 列名 2]、...[テーブル M 列名] N]、[表 2 の行と列に格納される値]
上記は、Web サービスの典型的な例の PHP コンテンツを調整するための .NET です。その他の関連記事については、PHP 中国語 Web サイト (www. php.cn)!