【问题标题】:Joomla and XMLRPC: 'Incorrect parameters passed to method...'Joomla 和 XMLRPC:“传递给方法的参数不正确......”
【发布时间】:2010-03-02 10:00:44
【问题描述】:

我一直在尝试为 Joomla 1.5 编写一个简单的回显服务,但没有成功。 我的代码是这样的:

echo.php:

<?php

defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.plugin.plugin');


class plgXMLRPCEcho extends JPlugin{

    function plgXMLRPCEcho(&$subject, $config){
        parent::__construct($subject, $config);
    }


    function onGetWebServices(){
       global $xmlrpcString;

        $services = array();

        // Site search service
        $services['echo.echoService'] = array(
            'function' => 'plgXMLRPCEchoServices::echoService',
            'docstring' => 'Returns its parameter.',
            'signature' => array(array($xmlrpcString))
            );

        return $services;
    }

}


class plgXMLRPCEchoServices{    
    function echoService($key){
        return $key;    
    }
}

echo.xml:

   <?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="xmlrpc">
    <name>XML-RPC - Echo API</name>
    <author>G. N. Mueller</author>
    <creationDate>February 2010</creationDate>
    <copyright>
        Copyright (C) 2010 - 2013 G. Mueller. All rights reserved.
    </copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
    <authorEmail>xxxxx@xxxx.yy</authorEmail>
    <authorUrl>www.joomla.org</authorUrl>
    <version>1.0</version>
    <description>Joomla! XML-RPC Echo API</description>
    <files>
        <filename plugin="echo">echo.php</filename>
    </files>
        <params>
        <param name="key" type="string" default=""
            label="hello" description="echo param" />
    </params>
</install>

我的客户,client.py:

import xmlrpclib


url = 'http://www.live-grammar.com/xmlrpc/index.php'
proxy = xmlrpclib.ServerProxy(url, verbose=True)
print proxy.system.listMethods()
print proxy.system.methodSignature('echo.echoService')
print proxy.echo.echoService([['hello']])

输出是这样的:

['echo.echoService', 'system.listMethods', 'system.methodHelp', 'system.methodSignature', 'system.multicall', 'system.getCapabilities']

[['string']]

body: '<?xml version="1.0"?>\n<methodResponse>\n<fault>\n<value>\n<struct><member><name>faultCode</name>\n<value><int>3</int></value>\n</member>\n<member>\n<name>faultString</name>\n<value><string>Incorrect parameters passed to method: No method signature matches number of parameters</string></value>\n</member>\n</struct>\n</value>\n</fault>\n</methodResponse>'
Traceback (most recent call last):
  File "jav/rpc_client.py", line 11, in <module>
    print proxy.echo.echoService([['hello']])
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xmlrpclib.py", line 1199, in __call__
    return self.__send(self.__name, args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xmlrpclib.py", line 1489, in __request
    verbose=self.__verbose
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xmlrpclib.py", line 1253, in request
    return self._parse_response(h.getfile(), sock)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xmlrpclib.py", line 1392, in _parse_response
    return u.close()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xmlrpclib.py", line 838, in close
    raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 3: 'Incorrect parameters passed to method: No method signature matches number of parameters'>

谁能告诉我我做错了什么?我是 Joomla 的新手。任何帮助深表感谢。 谢谢, 格洛丽亚

【问题讨论】:

    标签: joomla xml-rpc


    【解决方案1】:

    你的 rpc 的签名是一个变体方法类型的数组。每个方法类型的形式为:[返回类型,参数类型...]。

    所以正确的签名是:array(array($xmlrpcString, $xmlrpcString))。这表示你有一个非重载方法,它接受一个字符串并返回一个字符串。

    【讨论】:

      【解决方案2】:

      谢谢你解决了我的问题。我从 Blogger API 和 Joomla 附带的 XML RPC Joomla API 复制了代码,它们在签名中都有相同的错误。 我不明白他们为什么分发不起作用的代码!这真是太烦人了。

      【讨论】:

        猜你喜欢
        • 2020-07-07
        • 2014-04-02
        • 1970-01-01
        • 2017-07-01
        • 1970-01-01
        • 2019-09-02
        • 2016-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多