我在探索使用XMLRPC服務在Drupal系統和我們網站的另一部分之間進行通信。我發現了PHP的php_xmlrpc擴展的一些示例代碼,但發現我們的Web主機不支持該擴展。PEAR XML_RPC_encode vs PHP xmlrpc_encode_request
取而代之的是,他們所提供的PEAR XML_RPC包
它出現的兩種方法進行編碼非常不同。
我用來設置該請求的PHP代碼,基於http://drupal.org/node/339845
$method_name = 'user.login';
$user_credentials = array(
0 => 'example.user',
1 => 'password',
);
// any user-defined arguments for this service
// here we use the login credentials we specified at the top of the script
$user_args = $user_credentials;
$required_args=array();
// add the arguments to the request
foreach ($user_args as $arg) {
array_push($required_args, $arg);
}
...then call the XMLRPC functions here...
我在我的電腦上測試php_xmlrpc與WAMPserver,並從php_xmlrpc功能xmlrpc_encode_request(http://us.php.net/manual/en/function.xmlrpc-encode-request.php)返回我所需要的,是這樣的:
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>user.login</methodName>
<params>
<param>
<value>
<string>example.user</string>
</value>
</param>
<param>
<value>
<string>password</string>
</value>
</param>
</params>
</methodCall>
而PEAR XML_RPC_encode()函數返回此:
Array
(
[0] => example.user
[1] => password
)
object(XML_RPC_Value)#1 (2) {
["me"]=>
array(1) {
["string"]=>
string(10) "user.login"
}
["mytype"]=>
int(1)
}
PEAR XML_RPC中是否有另外一個函數可以將參數編碼到XML中?
謝謝馬里奧!這正是我需要的。我對PEAR軟件包沒有太多的經驗,並且在他們的文檔中有點失落。我標記你的答案是正確的,如果它允許我的話,你會贊成。 – 2012-01-17 20:39:00
嗯,確實是這樣,PEAR文件並不總是可用的,並不是所有情況下都有用。而且這個類也只是比較簡單的PHP內置函數早一些。 (不要擔心投票,如果你能報告回答哪個答案有效就足夠了,這對未來的訪問者最有幫助。) – mario 2012-01-17 21:34:04