ホームページ  >  記事  >  バックエンド開発  >  webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信

WBOY
WBOYオリジナル
2016-07-30 13:29:26966ブラウズ

PHP SOAP サーバー

PHP と Soap を使用して SOAP サーバーをセットアップするのは非常に簡単です。基本的には、Web サービスに公開したい関数を記述し、それを Soap に登録するだけです。さらに、PHP SOAP サーバーの確立を完了するには webServicephpのsoapとnusoapのサーバーとクライアント間の通信 つの手順が必要です。まず、PHP コードで Soap オブジェクトのインスタンスを作成し、HTTP POST メソッドを使用して元のデータを処理のために Soap に渡す必要があります

SOAP の使用は比較的簡単です。最も一般的に使用されるクラスは SoapServer と SoapClient です。SoapServer は Web サービス サーバーの作成に使用され、SoapClient クラスはクライアントである Web サービスの呼び出しに使用されます。 SOAP は php5 から統合されているため、php.ini で SOAP コンポーネントを有効にするだけで済みます。

Windows を例に挙げます:

webServicephpのsoapとnusoapのサーバーとクライアント間の通信

extension=php_soap.dll

Soap实例:

webServicephpのsoapとnusoapのサーバーとクライアント間の通信、首先创建服务端,由于集成后的php5不需要引入任何soap支持文件,直接创建即可,例如访问地址设置为http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php。

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

03

04

05

06

07

08

09

webServicephpのsoapとnusoapのサーバーとクライアント間の通信0

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

classtest{

    functiondemo(){

        return'hello word';

    }

}

//开始创建webservice

//null可传入ip,第二个参数类webServicephpのsoapとnusoapのサーバーとクライアント間の通信0webServicephpのsoapとnusoapのサーバーとクライアント間の通信84;于授权标识,调用时会用到

$webService= newSoapServer(null,array('uri'=>'test.php'));

//设置需要提供的类,setClass不难理解吧?

$webService->setClass('test');

$webService->handle();

至此,soap服务端创建完成。

webServicephpのsoapとnusoapのサーバーとクライアント間の通信、调用刚刚创建的soap服务,同理,由于集成后的php5不需要引入任何soap支持文件,直接调用即可。

webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信

3

4

5

6

7

$client= newSoapClient(null,array(

    "location"=> 'http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php',

    "uri"extension=php_soap.dll=> 'test.php'//请求标识,服务器和客户端必须对应

));

//至此,便可调用类里面的方法了

$demo= $client->demo();

var_dump($demo);

Soap インスタンス: 🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信. まず、サービス終了後、統合された php5 は SOAP サポート ファイルを導入する必要がないため、たとえば、アクセス アドレスを http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php に設定します。 🎜🎜🎜🎜🎜🎜🎜🎜0webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜🎜0webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜🎜03🎜🎜04🎜🎜05🎜🎜06🎜🎜07🎜🎜08🎜🎜09🎜 🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信0🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜🎜🎜🎜🎜🎜クラス🎜🎜テスト{ 🎜🎜🎜🎜 🎜🎜function🎜🎜demo(){🎜🎜🎜🎜 🎜🎜return🎜🎜'hello word'🎜🎜}🎜🎜🎜🎜}🎜🎜🎜; 🎜//Webサービスの作成を開始します 🎜🎜🎜🎜/ /null は ip に渡すことができ、webServicephpのsoapとnusoapのサーバーとクライアント間の通信 番目のパラメータは認可 ID に似ており、🎜🎜🎜🎜$webService🎜🎜= 🎜🎜new🎜🎜SoapServer(null,🎜🎜array🎜🎜( 🎜🎜) 'uri'🎜🎜=>🎜🎜'test.php'🎜🎜));🎜🎜🎜🎜//提供する必要のあるクラスを設定します、setClassを理解するのは難しくありませんか? 🎜🎜🎜🎜$webService🎜🎜->setClass(🎜🎜'test'🎜🎜);🎜🎜🎜🎜$webService🎜🎜->handle();🎜🎜🎜🎜🎜🎜 🎜🎜🎜それだけです、サーバーが作成されます。 🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信. 作成したばかりの SOAP サービスを呼び出します。同様に、統合された php5 は SOAP サポート ファイルを導入する必要がないため、直接呼び出すことができます。 🎜🎜🎜🎜🎜🎜🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜🎜🎜🎜🎜$クライアント🎜 🎜= 🎜🎜new🎜🎜SoapClient(null,🎜🎜配列) 🎜🎜(🎜🎜🎜🎜) 🎜🎜「場所」🎜🎜=> 🎜🎜'http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php'🎜🎜,🎜🎜🎜🎜「uri」🎜 🎜🎜、 🎜🎜//リクエストの識別、サーバーとクライアントは対応している必要があります🎜🎜🎜🎜));🎜🎜🎜🎜//この時点で、クラス内のメソッドを呼び出すことができます🎜🎜🎜🎜$demo🎜🎜= 🎜🎜$client 🎜 🎜->demo();🎜🎜🎜🎜var_dump(🎜🎜$demo🎜🎜);🎜🎜🎜🎜🎜🎜🎜

ただし、Nusoap は Soap よりも柔軟です。操作プロセスは基本的に同じですが、処理プロセスに若干の違いがあります。最もよく使用されるクラスは、soap_server と nusoap_client です。クラス nusoap_client は、クライアントである Web サービスを呼び出すために使用されます。これら webServicephpのsoapとnusoapのサーバーとクライアント間の通信 つのクラスの定義は lib/nusoap.php にあるため、Web サービス インターフェイス プログラムを作成または呼び出すときにこのファイルを参照する必要があります。

NuSoap は、WebService を作成または呼び出すために使用される、PHP 環境の WebService プログラミング ツールです。これは、HTTP を介して SOAP メッセージを送受信する、完全に PHP 言語で記述された一連の PHP クラスであるオープン ソース ソフトウェアであり、NuSphere Corporation (http://dietrich.ganx4.com/nusoap/) によって開発されています。 NuSOAP の利点の webServicephpのsoapとnusoapのサーバーとクライアント間の通信 つは、拡張ライブラリのサポートを必要とせず、この機能により NuSoap をすべての PHP 環境で使用できるようになり、サーバーのセキュリティ設定の影響を受けないことです。

nusoap ダウンロードを提供します: nusoap-0.9.5

Nusoap インスタンス:

webServicephpのsoapとnusoapのサーバーとクライアント間の通信。最初に行うことは、まだサーバーを作成することです。先ほど、少しずれていると述べたので、これをサーバー上に作成しました。まずはnusoapサポートクラスライブラリを紹介します

);

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

03

04

05

06

07

08

09

webServicephpのsoapとnusoapのサーバーとクライアント間の通信0

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

//引入nusoap支持类库

require_once('lib/nusoap.php');

$soap= newsoap_server();

$soap->configureWSDL('test');

//这里要说明一下register这个函数,第一个参数是需要调用的方法,第二个参数是传入的数据,第三个参数是传出的数据。

$soap->register('GetTestStr',

        array("name"=> "xsd:string"/ /nusoap サポート クラス ライブラリを導入します// 参数,默认为 "xsd:string"

        array("return"=> "xsd:string")

        );

$HTTP_RAW_POST_DATA= isset($HTTP_RAW_POST_DATArequire_once$HTTP_RAW_POST_DATA: '';

$soap->service($HTTP_RAW_POST_DATA);(

'lib/nusoap.php'
🎜🎜$soap🎜🎜= 🎜🎜new🎜🎜soap_server (); 🎜$soap🎜🎜->configureWSDL(🎜🎜'test'🎜🎜);🎜🎜🎜🎜//ここで、最初のパラメータは呼び出す必要があるメソッドで、webServicephpのsoapとnusoapのサーバーとクライアント間の通信番目のパラメータは説明する必要があります。は受信データ、3 番目のパラメータは送信データです。 🎜🎜🎜🎜$soap🎜🎜->register(🎜🎜'GetTestStr'🎜🎜,🎜🎜🎜🎜 ) > 🎜🎜// パラメータ、デフォルトは「xsd:string」です🎜🎜🎜🎜 🎜🎜🎜🎜🎜) 🎜🎜🎜$HTTP_RAW_POST_DATA🎜🎜= isset(🎜🎜$HTTP_RAW_POST_DATA🎜🎜) ? 🎜🎜$HTTP_RAW_POST_DATA🎜🎜: 🎜🎜''🎜🎜;🎜🎜🎜🎜$soap🎜🎜->service(🎜🎜$HTTP_RAW_POST_DATA🎜🎜);🎜🎜 🎜 🎜🎜🎜🎜

この時点で、アドレスが http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php であると仮定して、nusoap サーバーが作成されました。

webServicephpのsoapとnusoapのサーバーとクライアント間の通信. nusoap に電話します。その前に、ここでカプセル化しました。ファイルは class.nuSoapApi.php で、コードは次のとおりです。

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

03

04

05

06

07

08

09

webServicephpのsoapとnusoapのサーバーとクライアント間の通信0

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信3

webServicephpのsoapとnusoapのサーバーとクライアント間の通信4

webServicephpのsoapとnusoapのサーバーとクライアント間の通信5

webServicephpのsoapとnusoapのサーバーとクライアント間の通信6

webServicephpのsoapとnusoapのサーバーとクライアント間の通信7

webServicephpのsoapとnusoapのサーバーとクライアント間の通信8

webServicephpのsoapとnusoapのサーバーとクライアント間の通信9

webServicephpのsoapとnusoapのサーバーとクライアント間の通信0

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信3

webServicephpのsoapとnusoapのサーバーとクライアント間の通信4

webServicephpのsoapとnusoapのサーバーとクライアント間の通信5

webServicephpのsoapとnusoapのサーバーとクライアント間の通信6

webServicephpのsoapとnusoapのサーバーとクライアント間の通信 7

webServicephpのsoapとnusoapのサーバーとクライアント間の通信8

webServicephpのsoapとnusoapのサーバーとクライアント間の通信9

30

3webServicephpのsoapとnusoapのサーバーとクライアント間の通信

3webServicephpのsoapとnusoapのサーバーとクライアント間の通信

33

34

35

36

37

38

39

40

4webServicephpのsoapとnusoapのサーバーとクライアント間の通信

4webServicephpのsoapとnusoapのサーバーとクライアント間の通信

43

44

45

46

47

48

49

50

5webServicephpのsoapとnusoapのサーバーとクライアント間の通信

5webServicephpのsoapとnusoapのサーバーとクライアント間の通信

53

54

55

56

57

58

59

6 0

6webServicephpのsoapとnusoapのサーバーとクライアント間の通信

6webServicephpのsoapとnusoapのサーバーとクライアント間の通信

63

64

65

66

67

68

69

70

7webServicephpのsoapとnusoapのサーバーとクライアント間の通信

7webServicephpのsoapとnusoapのサーバーとクライアント間の通信

73

74

75

76

7 7

78

79

80

8webServicephpのsoapとnusoapのサーバーとクライアント間の通信

8webServicephpのsoapとnusoapのサーバーとクライアント間の通信

83

84

85

86

87

88

89

90

<?php <?php

/**

 * nusoap扩展类

 * Email:zhangyuan#tieyou.com

 * @author hkshadow

 */

//引入nusoap基类

require_once('pto/nusoap/nusoap_new/lib/nusoap.php');

classnuSoapApi extendsnusoap_client{

    private$_strSoapUrl= '';//wsdl url

    private$_strSoapDefenCoding= 'utf-8'; // 当前请求的HTTP内容类型的字符集。默认utf-8

    private$_strXmlEnCoding= 'utf-8';//传入消息的字符集编码(响应)。默认utf-8

    private$_arrParam= array //arrData

    private$_objSoap= null; //初始化Nusoap对象

     

    /**

     * 构造函数

     * @param str $_strSoapUrl

     * @param 可选,默认为wsdl $_strSoapWsdl

     */

    publicfunction__construct($_strSoapUrl,$_strSoapWsdl= true){

        if($this->_objSoap === null){

            $this/**newnusoap_client($_strSoapUrl,$_strSoapWsdl);

        }

    }

     

    /**

     * 设置消息数据

     * @param array $arrData

     */

    publicfunctionsetArrParam($arrData){

        $this $arrData;

    }

     

    /**

     * 设置xml编码

     * @param true / false $bool

     */

    publicfunctionsetDeCodeUtf8($bool= false){* nusoap 拡張クラス

🎜🎜🎜 🎜🎜* Email:zhangyuan#tieyou.com🎜🎜🎜🎜🎜🎜* @author hkshadow🎜🎜🎜🎜🎜 🎜*/ 🎜🎜 🎜🎜//nusoap 基本クラスを導入します🎜🎜🎜🎜require_once🎜🎜(🎜🎜'pto/nusoap/nusoap_new/lib/nusoap.php'🎜🎜);🎜🎜🎜🎜class🎜🎜 nuSoapApi 🎜 🎜拡張します🎜🎜 nusoap_client{ 🎜🎜🎜🎜 🎜🎜private🎜🎜$_strSoapUrl🎜🎜= 🎜🎜''🎜🎜;🎜🎜//wsdl URL🎜🎜🎜🎜プライベート🎜🎜$_str SoapDefenCoding🎜🎜= 🎜🎜'utf-8'🎜🎜 ; 🎜🎜// 現在のリクエストの HTTP コンテンツ タイプの文字セット。デフォルトの utf-8🎜🎜🎜🎜 🎜🎜private🎜🎜$_strXmlEnCoding🎜🎜= 🎜🎜'utf-8'🎜🎜;🎜🎜//受信メッセージ (応答) の文字セット エンコーディング。デフォルトの utf-8🎜🎜🎜🎜 🎜🎜private🎜🎜$_arrParam🎜🎜= 🎜🎜array🎜🎜(); 🎜🎜//arrData🎜🎜🎜🎜 🎜🎜private🎜🎜$_objSoap🎜🎜= null; 🎜🎜// Nusoap オブジェクトを初期化します 🎜🎜🎜🎜 🎜🎜🎜 🎜 🎜🎜/**🎜🎜🎜🎜 🎜🎜* コンストラクター 🎜🎜🎜🎜 🎜🎜* @param str $_strSoapUrl🎜🎜🎜🎜 sdl🎜🎜🎜🎜 🎜🎜*/🎜🎜🎜🎜 🎜🎜public🎜🎜function🎜🎜__construct(🎜🎜$_strSoapUrl🎜🎜,🎜🎜$_strSoapWsdl🎜🎜= true){🎜🎜🎜🎜 🎜(🎜🎜$this🎜) 🎜->_objSoap === null){🎜 🎜🎜🎜 🎜🎜新しい🎜🎜nusoap_client(🎜🎜$_strSoapUrl🎜🎜,🎜🎜$_strSoapWsdl🎜🎜); 🎜🎜🎜🎜🎜🎜🎜/**🎜🎜🎜🎜 🎜🎜* メッセージデータを設定します 🎜🎜🎜🎜 🎜🎜* @param array $arrData🎜🎜🎜🎜*/🎜🎜 🎜🎜 🎜🎜🎜🎜関数🎜🎜setArrParam(🎜🎜$arrData🎜🎜){🎜🎜🎜🎜 -&g t;_arrParam = 🎜🎜$arrData🎜🎜;🎜🎜🎜🎜 🎜🎜}🎜🎜🎜🎜 🎜🎜🎜🎜/**🎜🎜🎜🎜 🎜🎜* XMLエンコーディングを設定します 🎜🎜🎜🎜 🎜🎜* @param true / false $bool🎜🎜🎜🎜*/🎜🎜🎜🎜 🎜🎜public🎜 🎜関数🎜🎜setDeCodeUtf8(🎜🎜$bool 🎜 🎜= false){🎜🎜

        $this->_objSoap->decode_utf8 = $bool;

    }

     

    /**

     * 设置http内容类型的字符编码

     * @param str $strCode

     */

    publicfunctionsetSoapDefenCoding($strCode){

        if(!empty($strCode)){

            $this$bool;$strCode;

        }else{

            $this$this->_strSoapDefenCoding;

        }

    }

    publicfunctionsetXmlEnCoding($strCode){

        if(!empty($strCode)){

            $this }$strCode;

        }else{

            $this$this->_strXmlEnCoding;

        }

    }

     

    /**

     * 获取数据

     */

    publicfunctiongetRequestData($fun){

        $arrData= array();

        $arrData= $this->_objSoap->call($fun,$this->_arrParam);

        return$arrData;

    }

    /**

     *  数组转对象

     * @param array $arrData

     */

    publicfunctionarrDataObj($arrData){

        //引用地址,而非引用拷贝

        $objStdClass= newstdClass();

        foreach($arrDataas$key=>$value){

            if(is_array($value)){

                $objStdClass->$key= $this->arrDataObj($value);

🎜🎜🎜 🎜🎜/**🎜🎜🎜🎜 🎜🎜* http コンテンツタイプの文字エンコーディングを設定します 🎜🎜🎜🎜 🎜🎜* @param str $strCode🎜🎜🎜🎜 🎜🎜*/🎜🎜🎜 🎜 🎜🎜public🎜🎜function🎜🎜setSoapDefenCoding(🎜🎜$strCode 🎜🎜){🎜🎜🎜🎜 🎜🎜if🎜🎜(!🎜🎜空🎜🎜(🎜🎜$strCode🎜🎜)){🎜🎜🎜🎜 🎜🎜$this🎜🎜->objSoap->soap_defencoding = 🎜🎜$strCode🎜🎜;🎜🎜🎜🎜 🎜🎜}🎜🎜else🎜🎜{🎜🎜🎜🎜 🎜🎜$this🎜🎜-&g t;_objSoap->soap_defencoding = 🎜🎜$this🎜🎜->_strSoapDefenCoding;🎜🎜🎜🎜 🎜🎜}🎜🎜🎜🎜 🎜🎜}🎜🎜🎜🎜 🎜 🎜パブリック🎜🎜関数🎜🎜setXmlEnCoding(🎜🎜$strCode🎜🎜){🎜🎜🎜 🎜 🎜🎜if🎜🎜(!🎜🎜空🎜🎜(🎜🎜$strCode🎜🎜)){🎜🎜🎜🎜 🎜🎜$this🎜🎜-&g t;_objSoap->xml_encoding = 🎜🎜$strCode🎜🎜;🎜🎜🎜🎜 🎜🎜}🎜🎜else🎜🎜{🎜🎜🎜🎜 🎜🎜$this🎜🎜-&g t;_objSoap->xml_encoding = 🎜🎜$this🎜🎜->_strXmlEnCoding;🎜🎜🎜🎜 🎜🎜}🎜🎜🎜🎜 🎜🎜}🎜🎜🎜🎜 🎜 🎜🎜🎜 🎜🎜/**🎜🎜🎜🎜 🎜🎜* データを取得する 🎜🎜🎜🎜 🎜🎜*/🎜🎜🎜🎜 🎜🎜公開🎜🎜function🎜🎜getRequestData(🎜🎜$fun🎜🎜){🎜🎜🎜🎜 🎜🎜$arrData🎜🎜= 🎜🎜array🎜🎜();🎜🎜🎜 🎜 🎜🎜$arrData🎜🎜= 🎜🎜$this🎜 🎜->_objSoap->call(🎜🎜$fun🎜🎜,🎜🎜$this🎜🎜->_arrParam);🎜🎜🎜🎜 🎜🎜return🎜🎜$arrData🎜 🎜;🎜🎜🎜🎜 🎜🎜} 🎜🎜🎜🎜 🎜🎜/**🎜🎜🎜🎜 🎜🎜* オブジェクトへの配列 🎜🎜🎜🎜 🎜🎜* @param array $arrData🎜🎜🎜🎜*/🎜🎜🎜🎜 🎜🎜public🎜🎜function🎜🎜arrDataObj(🎜🎜$arrData🎜🎜){🎜🎜 🎜🎜 🎜🎜// 引用ではなく参照地址コピー🎜🎜🎜🎜 🎜🎜$objStdClass🎜🎜= 🎜🎜new🎜🎜stdClass();🎜🎜🎜🎜 🎜🎜foreach🎜🎜(🎜) 🎜$arrData🎜🎜as🎜🎜$key🎜🎜=>🎜🎜$ value🎜🎜){🎜🎜🎜🎜 🎜🎜if🎜🎜(🎜🎜is_array🎜🎜(🎜🎜$value🎜🎜)){🎜🎜🎜🎜 🎜🎜$objStdClass🎜🎜->🎜🎜$key🎜🎜= 🎜🎜$this🎜🎜->arrDataObj(🎜🎜$value🎜🎜);🎜🎜

            }else{

                $objStdClass->$key= $value;

            }

        }

        return$objStdClass;

    }

eLSE}

?>

从这里开始调用执行过程:

= $value

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

03

04

05

06

07

08

09

webServicephpのsoapとnusoapのサーバーとクライアント間の通信0

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信3

webServicephpのsoapとnusoapのサーバーとクライアント間の通信4

webServicephpのsoapとnusoapのサーバーとクライアント間の通信5

webServicephpのsoapとnusoapのサーバーとクライアント間の通信6

webServicephpのsoapとnusoapのサーバーとクライアント間の通信7

webServicephpのsoapとnusoapのサーバーとクライアント間の通信8

webServicephpのsoapとnusoapのサーバーとクライアント間の通信9

//定义webservice的请求url

define('SERVICEDTS_WEBSERVER_URL'{'http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php?wsdl');

//引入刚刚封装的类

require_once('lib/class.nuSoapApi.php');

//调用nusoap扩展类

$client= newNusoapApi(SERVICEDTS_WEBSERVER_URL,true);

$client->setSoapDefenCoding('utf-8');

$client->setDeCodeUtf8(false);

$client->setXmlEnCoding('utf-8');

$paras= array('name'=> 'hkshadow');

$client->setArrParam($paras);

$result= $client->getRequestData('GetTestStr');

if(! $err= $client->getError ()) {

    echo" 返回结果: ", $result;

} else{

    echo" 调用出错: ", $err;

}

//输出Hello, { hkshadow } !

=
;🎜🎜🎜🎜}} 🎜🎜🎜🎜}🎜🎜🎜🎜?> 🎜0webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜🎜0webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜🎜03🎜🎜04🎜🎜05🎜🎜06🎜🎜07🎜🎜08 🎜🎜09🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信0🎜 🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜 🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信3🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信4 🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信5🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信6🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信7🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信8🎜🎜webServicephpのsoapとnusoapのサーバーとクライアント間の通信9🎜🎜 🎜🎜🎜//WebのリクエストURLを定義サービス🎜🎜🎜🎜define(🎜🎜 「SERVICEDTS_WEBSER VER_URL」🎜🎜、 🎜🎜'http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php?wsdl'🎜🎜);🎜🎜🎜🎜//カプセル化されたクラスを導入します🎜🎜🎜🎜require_once🎜🎜(🎜🎜'lib/class.nuSoapApi.php '🎜🎜);🎜🎜🎜🎜//nusoap 拡張クラスを呼び出す🎜🎜🎜🎜$client🎜🎜= 🎜🎜new🎜🎜NusoapApi(SERVICEDTS_WEBSERVER_URL,true);🎜🎜🎜 🎜$ client🎜🎜->setSoapDefenCoding(🎜) 🎜'utf-8'🎜🎜);🎜🎜🎜🎜$client🎜🎜->setDeCodeUtf8(false);🎜🎜🎜🎜$client🎜🎜->setXmlEnCoding(🎜🎜'utf-8' 🎜); 🎜🎜🎜🎜$paras🎜🎜= 🎜🎜array🎜🎜(🎜🎜'name'🎜🎜=> 🎜🎜'hkshadow'🎜🎜);🎜🎜🎜🎜$client🎜 🎜->setArrParam(🎜🎜$ paras🎜🎜);🎜🎜🎜🎜$result🎜🎜= 🎜🎜$client🎜🎜->getRequestData(🎜🎜'GetTestStr'🎜🎜);🎜🎜🎜🎜if🎜🎜(! 🎜🎜$エラー🎜🎜= 🎜🎜$client🎜🎜->getError ()) {🎜🎜🎜🎜 🎜🎜echo🎜🎜" 返される結果: "🎜🎜, 🎜🎜$result🎜🎜;🎜🎜🎜🎜 } 🎜🎜その他🎜🎜{🎜 🎜🎜🎜 🎜🎜echo🎜🎜" 呼び出しエラー: "🎜🎜, 🎜🎜$err🎜🎜;🎜🎜🎜🎜}🎜🎜🎜🎜//出力 こんにちは、{ h 🎜🎜🎜🎜🎜 🎜🎜

説明:

WSDL
WSDL は、Web サービスを記述するために使用される XML 言語です。これは、サービスにアクセスするために必要なすべての情報を Web サービス クライアントに提供する機械可読形式です。 NuSOAP は、特に WDSL ファイルを解析し、そこから情報を抽出するクラスを提供します。 soapclient オブジェクトは、開発者がサービスを呼び出すのを容易にするために wsdl クラスを使用します。 WSDL 情報を利用してメッセージを作成することにより、プログラマは、それを呼び出す操作の名前とパラメータを知るだけで済みます。

NuSOAP 経由で WSDL を使用すると、次の利点があります:
名前空間、エンドポイント URL、パラメーター名などのすべてのサービス メタファイルを WSDL ファイルから直接取得できるため、クライアントはサーバー側の変更に動的に適応できます。このデータはサーバーから常に利用できるため、このデータをユーザー スクリプトにハードコーディングする必要はなくなりました。
これにより、soap_proxy クラスを使用できるようになります。このクラスは、soapclient クラスから派生し、WDSL ファイルで詳細に説明されている操作に対応するメソッドを追加します。ユーザーはそれを通じてこれらのメソッドを直接呼び出すことができるようになりました。
soapclient クラスには、soap_proxy クラスのオブジェクトを返す getProxy() メソッドが含まれています。 soap_proxy クラスは、soapclient クラスから派生し、WSDL ドキュメントで定義された操作に対応するメソッドを追加し、ユーザーがエンドポイントのリモート メソッドを呼び出せるようにします。これは、soapclient オブジェクトが WDSL ファイルで初期化されている場合にのみ適用されます。長所はユーザーにとっての使いやすさですが、短所はパフォーマンスです (PHP でのオブジェクトの作成には時間がかかります)。この機能は実用的な目的には役立ちません。

= 新しい

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

0webServicephpのsoapとnusoapのサーバーとクライアント間の通信

03

04

05

06

07

08

09

webServicephpのsoapとnusoapのサーバーとクライアント間の通信0

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

webServicephpのsoapとnusoapのサーバーとクライアント間の通信3

webServicephpのsoapとnusoapのサーバーとクライアント間の通信4

webServicephpのsoapとnusoapのサーバーとクライアント間の通信5

webServicephpのsoapとnusoapのサーバーとクライアント間の通信6

webServicephpのsoapとnusoapのサーバーとクライアント間の通信7

webServicephpのsoapとnusoapのサーバーとクライアント間の通信8

webServicephpのsoapとnusoapのサーバーとクライアント間の通信9

webServicephpのsoapとnusoapのサーバーとクライアント間の通信0

webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信

//调用nusoap扩展类

$client= newNusoapApi(SERVICEDTS_WEBSERVER_URL,true);

$client->setSoapDefenCoding('utf-8');

$client->setDeCodeUtf8(false);

$client->setXmlEnCoding('utf-8');

$paras= array('name'=> 'hkshadow');

$client->setArrParam($paras);

//      $result = $client->getRequestData('GetTestStr');

//生成proxy类

$proxy= $client->getProxy();

//调用远程函数

$sq= $proxy->GetTestStr('Bruce Lee');

if(!$err=$proxy->getError()) {

    print_r($sq);

} else{

    print"ERROR: $err";

}

print'REQUEST:<xmp>'.$p->request.'</xmp>';

print'RESPONSE:<xmp>'.str_replace('>//nusoap拡張クラスを呼び出す<code>">n<code>, $p->response).'</xmp>';

$client
🎜NusoapApi(SERVICEDTS_WEBSERVER_URL,true );🎜🎜🎜🎜$client🎜🎜-> setSoapDefenCoding(🎜🎜'utf-8'🎜🎜);🎜🎜🎜🎜$client🎜🎜->setDeCodeUtf8(false); ent🎜🎜 -> ;setXmlEnCoding(🎜🎜'utf-8'🎜🎜);🎜🎜🎜🎜$paras🎜🎜= 🎜🎜array🎜🎜(🎜🎜'name'🎜🎜=> 🎜🎜'hkshadow' 🎜🎜); 🎜🎜$client🎜🎜->setArrParam(🎜🎜$paras🎜🎜);🎜🎜🎜🎜// $result = $client->getRequestData('GetTestStr');🎜🎜🎜 🎜//プロキシクラスを生成🎜 🎜🎜🎜$proxy🎜🎜= 🎜🎜$client🎜🎜->getProxy();🎜🎜🎜🎜//リモート関数を呼び出す🎜🎜🎜🎜$sq🎜🎜= 🎜🎜$proxy 🎜 🎜-> 🎜🎜'ブルース・リー'🎜🎜);🎜🎜🎜🎜if🎜🎜(!🎜🎜$err🎜🎜=🎜🎜$proxy🎜🎜->getError()) {🎜🎜🎜🎜 🎜 🎜print_r( 🎜🎜 $sq🎜🎜);🎜🎜🎜🎜} 🎜🎜else🎜🎜{🎜🎜🎜🎜 🎜🎜print🎜🎜"エラー: $err"🎜🎜;🎜🎜 🎜🎜} 🎜🎜🎜🎜print🎜🎜のリクエスト: <xmp>'🎜🎜.🎜🎜$p🎜🎜->request.🎜🎜'</xmp>'🎜🎜;🎜🎜🎜🎜print🎜🎜'RESPONSE:<xmp>'🎜 🎜.🎜🎜 str_replace 🎜 🎜(🎜🎜'>nresponse).🎜🎜'</xmp>'🎜🎜;🎜🎜🎜🎜🎜🎜🎜

先ほど作成したサーバーURL http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php を実行します。実行後の結果は次のとおりです。
webServicephpのsoapとnusoapのサーバーとクライアント間の通信

メソッド名をクリックします。このように、サービスに数行のコードを追加することで、NuSOAP を使用してサービスのビジュアル ドキュメントを提供します。しかし、私たちにできることはそれだけではありません。

webServicephpのsoapとnusoapのサーバーとクライアント間の通信

NuSOAP を使用して、サービスにいくつかの WSDL 呼び出しを追加します。サービス用の WSDL とその他のドキュメントを生成できます。対照的に、少なくともこの単純な例では、クライアントでできることはあまりありません。以下に示すクライアントは、WSDL を使用しないクライアントと変わりません。唯一の違いは、soapclent クラスの解析が、以前のようにサービス エンドポイントの代わりに WSDL の URL を提供することによって行われることです。

NuSoap は WebService を呼び出すときにエンコーディングを設定できます。コード化けの解決策は次のとおりです。 、真);

$client->soap_defencoding = ->decode_utf8 = false; ファイル コードには出力を含めることができません。そうでない場合は、呼び出し時に次のようなエラーが報告されます:

'utf-8'

;

$client

$client= newnusoap_client("http://webServicephpのsoapとnusoapのサーバーとクライアント間の通信webServicephpのsoapとnusoapのサーバーとクライアント間の通信7.0.0.webServicephpのsoapとnusoapのサーバーとクライアント間の通信/test.php?wsdl"$client->xml_encoding =

'utf-8'$client; 'utf-8';

$client->decode_utf8 = false;

$client'utf-8';

XML error parsing SOAP payload on line x (行番号): 予約された XML 名php5 の組み込み SOAP をオンにするときに、nusoap の SoapClient クラスと php5 の組み込み SOAP クラスの間に競合がある場合 (ここではそのような状況はありません。両方とも同時に):

解決策
webServicephpのsoapとnusoapのサーバーとクライアント間の通信. php を変更します。ini は php5 の組み込みの SOAP 拡張機能 (Windows では php_soap.dll) をロードしません。

webServicephpのsoapとnusoapのサーバーとクライアント間の通信. nusoap の SoapClient クラスの名前を変更した人もいます。


現時点では、php5 の組み込み SOAP であっても、nusoap 拡張クラスであっても、Webservice が解決策です。上記の例から、nusoap の方がより柔軟であり、単純な Web サーバー通信の場合は、php5 組み込み SOAP の方が高速です。 、どれを選んでも、どちらかを選択してください。

元のアドレス: http://www.mudbest.com/webservicephp%E7%9A%84soap%E4%B8%8Enusoap%E6%9C%8D%E5%8A%AwebServicephpのsoapとnusoapのサーバーとクライアント間の通信%E7%AB%AF%E4%B8 %8E%E5%AE%AwebServicephpのsoapとnusoapのサーバーとクライアント間の通信%E6%88%B7%E7%AB%AF%E7%9A%84%E9%80%9A%E4%BF%AwebServicephpのsoapとnusoapのサーバーとクライアント間の通信/

上記は、soap と nusoap のサーバーと webServicephp のクライアント間の通信を内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。


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