標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (117) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (126) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2014年5月14日 星期三

Web Service to return Object or Array or Hash from Server to Client

http://www.ivoronline.com/Coding/Languages/PHP/Tutorials/PHP%20-%20API%20-%20Web%20Services%20-%20SOAP%20Extension%20-%20Examples%20-%20Return%20Object%20or%20Array%20-%20or%20Hash%20as%20anyType.php

- Info:
  - This example shows how to use Web Service to return Object or Array or Hash from Server to Client.
  - In order for this to work we had to omit type of response message: <part name="infoReturn"></part>
  - This approach is not appropriate since WSDL doesn't define class structure so Client can't get that info from WSDL.
    This is fixed in tutorial PHP � SOAP Extension � Examples � Return Object � Define structure in WSDL.

- Procedure:
  - Create cllient11.php, server11.php and server11.wsdl in directory accessable from web.

    client11.php
    <?php
   
    //DISABLE WSDL CACHE.
    ini_set("soap.wsdl_cache_enabled", "0");
   
    //CREATE SOAP CLIENT FROM WSDL.
    $client = new SoapClient("http://app.lab.aduro.hr/~givor/SelfcareWS/src/server11.wsdl");
   
    //CALL SOAP METHOD.
    $test = $client->test();
   
    //DISPLAY RESPONSE.
    var_dump($test);
    echo($test->name." ".$test->surName);         //Return object data.
    //echo($test[0]." ".$test[1]);                //Return array  data.
    //echo($test["name"]." ".$test["surName"]);   //Return hash   data.
   
    ?>
   
    server11.php
    <?php
   
    //CLASS WTH WEB SERVICE METHODS.
    class WebService {
   
      function test() {
      
        //OBJECT.
        $obj = new stdClass();
        $obj -> name    = "John";
        $obj -> surName = "Malkovic";
      
        //ARRAY.
        $arr = array("John", "Malkovic");
      
        //HASH.
        $hsh = array("name"=>"John", "surName"=>"Malkovic");
      
        //RETURN.
        return $obj;      //Return object.
        //return $arr;    //Retun array.
        //return $hsh;    //Retun hash
      
     
      
    }
   
        //DISABLE WSDL CACHE.
    ini_set("soap.wsdl_cache_enabled", "0");
   
    //CREATE SOAP SERVER.
    ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
    $server = new SoapServer("http://app.lab.aduro.hr/~givor/SelfcareWS/src/server11.wsdl");
    $server->setClass("WebService");
    $server->handle();
   
    ?>

    server11.wsdl
    <?xml version='1.0' encoding='UTF-8'?>
    <!-- WSDL file generated by PHP WSDLCreator (http://www.protung.ro) -->
    <definitions name="WSDLExample1" targetNamespace="urn:WSDLExample1"
      xmlns:typens="urn:WSDLExample1" 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://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
   
      <message name="infoResponse">
        <part name="infoReturn"></part>
      </message>
      
      <portType name="SelfcareWS1PortType">
        <operation name="test">
          <documentation>Adds two numbers.</documentation>
          <output message="typens:infoResponse"></output>
        </operation>
      </portType>
      
      <binding name="SelfcareWS1Binding" type="typens:SelfcareWS1PortType">
        <soap:binding style="rpc"
          transport="http://schemas.xmlsoap.org/soap/http"></soap:binding>
        <operation name="test">
          <soap:operation soapAction="urn:SelfcareWS1Action"></soap:operation>
          <input>
            <soap:body namespace="urn:WSDLExample1" use="encoded"
              encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"></soap:body>
          </input>
          <output>
            <soap:body namespace="urn:WSDLExample1" use="encoded"
              encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"></soap:body>
          </output>
        </operation>
      </binding>
      
      <service name="WSDLExample1Service">
        <port name="SelfcareWS1Port" binding="typens:SelfcareWS1Binding">
          <soap:address     location="http://app.lab.aduro.hr/~givor/SelfcareWS/src/server10.php"></soap:address>
        </port>
      </service>
      
    </definitions>

    output (For Object)
    object(stdClass)#2 (2) {
     嚤"name"]=>
     澵tring(4) "John"
     嚤"surName"]=>
     澵tring(8) "Malkovic"
    }
    John Malkovic
   
    output (For Array)
    array(2) {
     嚤0]=>
     澵tring(4) "John"
     嚤1]=>
     澵tring(8) "Malkovic"
    }
   
    output (For Hash)
    array(2) {
     嚤"name"]=>
     澵tring(4) "John"
     嚤"surName"]=>
     澵tring(8) "Malkovic"
    }

沒有留言:

張貼留言