2009-12-15 3 views
0

J'ai un problème dans la création de service web en utilisant cakephp. ce que je fais pour créer ce service web. J'utilise NuSOAP - Web Services Toolkit pour PHP pour cela. Je crée un contrôleur appelé WsController et j'importe la bibliothèque dessus.webservice cakephp

class WsController extends AppController{ 

var $uses = array(); 

function info() { 
    $this->layout= null; 
    $ns="http://www.techvoicellc.com/Tutorials//"; 
    $server = new soap_server(); 


    $server->configureWSDL('mostafa',$ns); 
    $server->wsdl->schemaTargetNamespace=$ns; 
    $server->wsdl->addComplexType('ArrayOfstring','complexType', 
    'array','','SOAP-ENC:Array',array() 
    ,array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'string[]')), 
    'xsd:string'); 


    $server->register('sum', 
    array('x' => 'xsd:integer','y' => 'xsd:integer'),   
    array('z' => 'xsd:integer'), 
    $ns,           
    "$ns#sum",        
    'rpc',           
    'encoded',          
    'documentation'  // documentation 
    ); 

    $server->service($HTTP_RAW_POST_DATA); 
} 

function sum($x,$y){ 
    $z=$x+$y; 
    return new soapval('return','xsd:integer',$z); 
} 

} 

et je crée le clint dans l'action du contrôleur comme celui-ci

function index() { 
    $wsdl = 'http://localhost/asd/ws/info?wsdl'; 
    $client = new nusoap_client ($wsdl, true); 

    $this->client = new nusoap_client($wsdl, true); 
    $param1 = array ('x' => 2, 'y' => 1); 
    $a = $client->call ('sum', $param1); 
    echo $a; 
} 

il ne fait aucun amincit bien que je crée ce dans le projet non gâteau et son travail très bien

espoir Quelqu'un peut-il me dire quelle est la meilleure pratique pour créer un service web dans le gâteau php

+0

wow à beaucoup de code, pls formater votre code ;-) – streetparade

+0

malheureusement je ne peux pas modifier votre question, je voudrais modifier et formater votre question afin qu'il soit plus facile à lire – streetparade

+0

Pourquoi êtes-vous '' try' et catching' une instruction 'echo' et' set() '? Aucun d'entre eux ne lèvera jamais une exception. – deceze

Répondre

0

Il est préférable de créer un service web reposant. CakePHP a tout pour REST. Tout ce que vous avez à faire est de l'activer et de créer des vues json/xml.

Voici un lien avec votre point de départ: http://book.cakephp.org/2.0/en/development/rest.html

Y at-il une raison que vous voulez un service SOAP Web?

  1. Ce sera beaucoup plus difficile à créer et tester le service Web SOAP
  2. SOAP exigera des bibliothèques externes
  3. Il sera plus difficile pour les utilisateurs d'utiliser le service Web SOAP
2

Cette est assez Facile à développer des services Web dans CakePHP. Je l'ai fait plusieurs fois. Vérifiez les étapes ci-dessous.

class MyWebServicesController extends AppController { 
    var $name = 'MyWebServices'; 
    var $layout = "ajax"; 

    function index() { 
     $server = new SoapServer(null); 
     $server->setObject($this); 
     $server->handle(); 
     exit(0); 
    } 
    public function addNumbers($a,$b) { 
     return $a+$b 
    } 
} 

Maintenant, votre service Web est hébergé chez http://webroot/MyWebServices Maintenant, vous pouvez appeler addNumbers comme ci-dessous.

$client = new SoapClient(null, array('location' => "http://webroot/MyWebServices"); 
$sum = $client->addNumbers(1+2);