2012-06-01 33 views
0

我試圖用Drupal連接我的應用程序。它返回給我這個錯誤:「出錯了 - -32602:服務器錯誤,錯誤的方法參數數量。」我認爲它應該工作。如何使用xml-rpc連接到Drupal 6

有沒有人有什麼線索這裏有什麼問題?

我的代碼:

set_time_limit(0); 
require_once("IXR_Library.php"); 

// Create the client object 
$client = new IXR_Client('http://localhost/drupal6/xmlrpc.php'); 
//$client->debug=true; 
$username = "admin"; 
$password = "admin"; 
$params = array(0,$username,$password,10); 


if (!$client->query('metaWeblog.getRecentPosts', $params)) { 
    die('Something went wrong - '.$client->getErrorCode().' : '.$client->getErrorMessage()); 
} 

$myresponse = $client->getResponse(); 

回答

0

你從你與之通信的XML-RPC端點得到一個error message (Specification for Fault Code Interoperability, version 20010516)

這是一個定義的錯誤代碼:

-32602 ---> server error. invalid method parameters 

您請求的RPC方法被服務器發現,但你傳遞無效的參數傳遞給它。聯繫您使用的服務的支持以獲取所有可用方法的列表。如果您的參數應該可用,請聯繫支持人員並與他們討論問題。

在你的情況,請仔細檢查一下Drupal的手冊告訴你關於metaWeblog.getRecentPosts XMLRPC方法blogapi_xmlrpcDrupal API

array(
    'metaWeblog.getRecentPosts', 
    'blogapi_metaweblog_get_recent_posts', 
    array('array', 'string', 'string', 'string', 'int'), 
    t('Returns a list of the most recent posts in the system.'), 
), 

如果沒有足夠的文件,由Drupal的源代碼中查找缺失的部分了。

例如,第一個參數需要是字符串,但在此使用整數0

欲瞭解更多信息如何使用XMLRPC自省,請參閱相關問題/答案:XMLRPC showing -32601 error (using PHP)

我不知道drupal是否支持XMLRPC自檢,但它看起來像它一樣。

+0

你的意思是第一個參數需要排列正確嗎?任何我嘗試返回相同的錯誤。 Introspections返回一堆警告,如:「警告:array_values()期望參數1爲數組,在第713行 E:\ xampp \ htdocs \ test \ xmlrpc-discovery.php中給出的字符串blogger.editPost()更新有關3 .. blogger.getPost 警告:array_shift()期望參數1是數組,在第712行的E:\ xampp \ htdocs \ test \ xmlrpc-discovery.php中給出的字符串。沒有什麼好用的:( – warriorslo

+0

)不,請參閱XMLRPC Instrospection。第一個條目是返回類型,參數跟在後面。所以返回類型是數組,而不是第一個參數我已經在回答中提出了:你需要字符串,但是你有整數 - 你看到的錯誤只是我認爲沒有內省可用或者XMLRPC不符合標準。 – hakre