I've written a controller to handle a few XML-RPC requests, as well a
a basic PHP client to test with. The data is being passed to the
server ok but something's keeping the action from running. I've got
log statements in both beforeFilter and the action itself, but the
latter never show up in the log. Can anyone see anything I've missed?

function beforeFilter()
{
        parent::beforeFilter();
        $this->Auth->allowedActions = array('handle_request');
        $this->layout = $this->autoRender = false;
        Configure::write('debug', 0);
        App::import('Vendor', 'kd_xmlrpc');
        
        $this->log('beforeFilter');
        $this->log($GLOBALS['HTTP_RAW_POST_DATA']);
        $this->log($this->params);
}

function isAuthorized()
{
        return true;
}

/**
 * Handle a request
 *
 * @access      public
 * @param       void
 * @return      void
 */
public function handle_request()
{
        $this->log('handle_request');
        $data = XMLRPC_parse($GLOBALS['HTTP_RAW_POST_DATA']);
        $this->log($data);
        
        $method_name = XMLRPC_getMethodName($data);
        
        if (!method_exists(__CLASS__, $method_name))
        {
                $this->__error(
                        ERROR_XMLRPC_METHOD_NOT_FOUND,
                        "The method you requested, ${method_name}, was not 
found."
                );
        }
        
        $params = XMLRPC_getParams($data);
        
        $this->setAction($method_name, $params);
}


The log gets:

-- snip --
2011-03-26 23:37:05 Error: beforeFilter
2011-03-26 23:37:05 Error: <?xml version="1.0" ?>
<methodCall>
        <methodName>memberExists</methodName>
        <params>
                <param>
                        <value>
                                <string>t...@test.com</string>
                        </value>
                </param>
        </params>
</methodCall>

2011-03-26 23:37:05 Error: Array
(
    [pass] => Array
        (
        )

    [named] => Array
        (
        )

    [plugin] =>
    [controller] => member_rpcs
    [action] => handle_request
    [form] => Array
        (
        )

    [url] => Array
        (
            [url] => members/rpc
        )

)
-- snip --

That's it--nothing from the action itself. I also added, right after
App::import(...)

$this->log(XMLRPC_parse($GLOBALS['HTTP_RAW_POST_DATA']));

... and it looked fine. So there's no trouble with loading the vendor file.

I'm trying to figure out the best way to monitor what's happening
inside the controller. It seems to me that Auth shouldn't be
interfering, but I guess that's a possibility. But I'm not sure how to
check that, either.

This is the library I'm using, if anyone's interested:
http://keithdevens.com/software/xmlrpc

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to