2014-01-23 28 views
0

在我的網站中,我需要配置REST,XML-RPC,SOAP服務器。如何在Symfony中配置XML-RPC服務器

REST: I have used the FriendsOfSymfony REST bundle 
SOAP: PHP SOAP used (doc from symfony website 
XML-RPC: I have planed to use the Zend XmlRpc 

如何配置的Symfony了Zend XMLRPC服務器?

任何有用的鏈接一步一步配置?

或任何其他XML-RPC可以用symfony提前使用

感謝, SVN

回答

1

我使用的Zend XMLRPC用symfony

composer.json

"zendframework/zend-xmlrpc": "2.1.*" 

config.yml

services: 
    MyTestService: 
     class: Acme\DemoBundle\Controller\MyTestService 
     arguments: ["@doctrine.orm.entity_manager"] 

的routing.yml

_xmlrpc: 
    pattern: /xmlrpc 
    defaults: { _controller: AcmeDemoBundle:Xmlrpc:index } 
_xmlrpc_test: 
    pattern: /xmlrpc/test 
    defaults: { _controller: AcmeDemoBundle:Xmlrpc:test } 

控制器

public function indexAction() 
{ 
    $server = new \Zend\XmlRpc\Server; 
    $server->setClass($this->get('MyTestService')); 

    $response = new Response(); 
    $response->headers->set('Content-Type', 'text/xml; charset=ISO-8859-1'); 
    ob_start(); 
    $server->handle(); 
    $response->setContent(ob_get_clean()); 
    return $response; 
} 
public function testAction() 
{ 
    $client = new \Zend\XmlRpc\Client('`http://127.0.0.1/symfony_xmlrpc/web/app_dev.php/xmlrpc`'); 
    $result= $client->call('ping', array('test')); 
    echo '<br/><br/>XmlRpc:<br/>'; 
    var_dump ($result); 

    $response = new Response(); 
    $response->headers->set('Content-Type', 'text'); 
    ob_start(); 

    $response->setContent('testme'); 
    return $response; 

} 

MyTestService

namespace Acme\DemoBundle\Controller; 

class MyTestService { 

    /** 
    * A simple ping service 
    * 
    * @param string $value 
    * @return string 
    */ 
    function ping($value) { 
     return $value . ' back from server symfony'; 
    } 
    /** 
    * A simple pong service 
    * 
    * @param string $token 
    * @param array $arg 
    * @return array 
    */ 
    function pong($token, $arg) { 
     return array($token.'data'=>$arg); 
    } 
} 
0
Xmlrpc (request send to external url to retrieve data) 

by using simple sudo apt-get install php5-xmlrpc ,we can install xmlrpc 

we can use it in symfony and php also accordimg to url format we have to request. 
In controller 

public function testAction() 
{ 

$method = 'index.bus'; 
$date = '2002-02-20'; 
$source = 112; 
$dest = 69; 
$s_id = 1310; 
$seat = 'seat'; 
$request = xmlrpc_encode_request($method, array("date"=>$date, 
        "sourceids"=>$source, 
        "destinationids"=>$dest, 
        "serviceids"=>$s_id, 
        "selected_seat"=>$seat)); 



$context = stream_context_create(array('http' => array(
    'method' => "POST", 
    'header' => "Content-Type: text/xml\r\nUser-Agent: PHPRPC/1.0\r\n", 
    'content' => $request 
))); 
//(external url) their format of request 
$file = file_get_contents("http://url.com/api/cabs/server.php?SecurityKey=ATSELKSWER", false, $context); 
$response = xmlrpc_decode($file); 
if ($response && xmlrpc_is_fault($response)) { 
    trigger_error("xmlrpc:$response[faultString]($response[faultCode])"); 
} 
else{ 
    print_r($response); 

    }