php-resource.de

PHP Tutorial: Eigene Web Services mit PHP5 bereitstellen? Kein Problem!

PHP5 bietet das nötige Rüstzeug, um bequem und schnell den eigenen Web Service auf die Beine zu stellen.

|01.05.2005 | beebob | 34786 | KAT : PHP | | Kommentare 0


4

7

Der Soap Client

Um den Rahmen dieses Tutorials nicht zu sprengen, liegt Ihnen eine vorgefertigte und einfach zu verwendende Javascript Klasse zur Steuerung des Soap Clients vor. Diese Klasse habe ich im Rahmen meines CM Frameworks erstellt, um bequemer Anfragen an den Soap Server stellen zu können.

Öffnen Sie eine leere Datei und speichern Sie diese als "BlasterSoapClient.js" ab. Allerdings brauchen Sie dies nicht im Document Root zu tun. Sie erfahren später wieso. Kopieren Sie folgenden Code in die Datei und speichern:

/**
* The SoapClient Class
*/
function BlasterSoapClient() {
        this.transportURI = '';
        this.urn = 'urn:noxmethods';    
        this.enablePrivilege = 'UniversalBrowserRead';
}  

/*
*    Method BlasterSoapClient::asyncInvoke() does not halt script when receiving result!
*/
BlasterSoapClient.prototype.asyncInvoke = function (method,args,callback){
    try {
        netscape.security.PrivilegeManager.enablePrivilege(this.enablePrivilege);
    } catch (e) {
        alert(e);
        return false;
    }
    
    var soapCall = new SOAPCall();
    var prot = BlasterSoapClient.prototype;
    
    soapCall.transportURI = this.transportURI;
    
    var params = new Array(args.length);
    for(i=0;i<args.length;i++){
        params[i] = new SOAPParameter(args[i],'')
    }
    
    soapCall.encode(0, method, this.urn, 0, null, params.length, params);
    
    soapCall.asyncInvoke(
      function (response, soapcall, error)
       {
          var r = prot.handleSOAPResponse(response,soapcall,error);
          callback(r);
        }
    );
};
 
/*
*    Response handler for BlasterSoapClient::asyncInvoke()
*/
BlasterSoapClient.prototype.handleSOAPResponse = function (response,call,error)
{
    if (error != 0)
    { 
        throw "Service failure";
    } else 
    {
        var fault = response.fault; 
        if (fault != null) { 
            var code = fault.faultCode; 
            var msg = fault.faultString; 
            throw "SOAP Fault:nn" +
                "Code: "  + code +
                "nnMessage: " + msg
        } else 
        {
            return response;
        }
    }
    
    throw "Failure";
};

/*
* When using this, all scripts will halt until result could be retrieved
*/
BlasterSoapClient.prototype.invoke = function (func, args) 

      try {
          netscape.security.PrivilegeManager.enablePrivilege(this.enablePrivilege);
       } catch (e) {
           throw e;
    }
    
       var soap_call = new SOAPCall(); 
       soap_call.transportURI = this.transportURI;
       
       var p = new Array(args.length);
       for(i=0;i<args.length;i++){
           p[i] = new SOAPParameter(args[i],'');
       }
         
       soap_call.encode(0, func, this.urn, 0, null, p.length, p);
       
       var temp = soap_call.invoke();
       
       if (temp.fault) { 
           throw 'Code: ' + temp.fault.faultCode + 'n String: ' + temp.fault.faultString; 
       } else { 
           var response = new Array(); 
           response = temp.getParameters(false, {}); 
           return response[0].value; 
       } 
}

/*
* User defineable method to handle result when asyncInvoke() is called. add it as third param there!
*/
BlasterSoapClient.prototype.showResults = function (results)
{
    if (!results)
    {
      return;
    }
    
    var params = results.getParameters(false,{});
      alert(params[0].value);
};
Navigation -> Seitenanzahl : (7)

  «  1 2 3 4 5 6 7  » 
Kommentare zum Tutorial
Tutorial kommentieren
 
Über den Autor
beebob

beebob

Status
Premium Mitglied

Beruf
Unbekannt

Mitglied seit:
30.04.2009

letzte Aktivität
04.06.2009

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

Projektmanagement Damals und Heute

Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Neu | Berni

Arbeitsmanagement-Tools

Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Neu | Berni