2009-12-15 77 views
0

我在使用cakephp创建web服务时遇到了问题。 这就是我所做的创建这个网络服务。 我为此使用NuSOAP - PHP的Web服务工具包。 我创建一个名为WsController的控制器并在其上导入库。cakephp webservice

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); 
} 

} 

和我创造这样

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; 
} 

控制器动作克林特它不这样做,虽然我在非蛋糕项目中创建这个任何变薄,它的做工非常精良

希望有人告诉我在蛋糕中创建网络服务的最佳做法是什么php

+0

哇得多的代码,请格式化你的代码;-) – streetparade 2009-12-15 21:06:22

+0

遗憾的是我不能编辑你的问题,我将编辑和格式化你的问题,使其更具有可读性 – streetparade 2009-12-15 21:16:06

+0

为什么你'try'和'catching'一个'echo'和'set()'语句?这些人都不会抛出异常。 – deceze 2009-12-15 23:18:25

回答

0

最好创建宁静的web服务。 CakePHP为REST构建了一切。你所要做的就是启用它并创建json/xml视图。

这里是你的起点的链接:http://book.cakephp.org/2.0/en/development/rest.html

有你想要SOAP Web服务的原因是什么?

  1. 这将是如此更难创建和测试SOAP Web服务
  2. SOAP将需要外部库
  3. 将变得更加困难,为用户使用SOAP Web服务
2

这相当于易于在CakePHP中开发Web服务。我已经做了好几次了。检查下面的步骤。现在

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 
    } 
} 

您的Web服务在http://webroot/MyWebServices 主办现在你可以调用的addNumbers像下面。

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