我在服务器上运行它,使用Joomla的XMLRPC实现。无论我尝试发送的xmlrpcval(包括null
)都没有发送。而是发送一个空数组。
相关主码。我尝试了不同种类的xmlrpcmsg发送(从复杂的数组到简单的字符串):
$articleData = new xmlrpcmsg("insertContent", array(new xmlrpcval($articleArray, "struct")));
$client = new xmlrpc_client("/administrator/components/com_quickagencyslave/remote/easyblog.php", $clientArray["url"]);
$response = $client->send($articleData);
奴隶代码(不是实际的功能,只是试图让它起作用:
function insertContent($params){
$data = $params->getParam(0);
$result = gettype($data);
return new xmlrpcresp(new xmlrpcval($result));
}
返回代码显示$data
属于NULL
类型。我做错了什么?
答案 0 :(得分:1)
事实证明,XMLRPC对于它将接受哪些数据非常严格(这些内容并未完全反映在docs中)。即使该数组已转换为XMLRPC对象,数组也不能包含普通对象。下面的代码将数组及其中的所有内容包装到XMLRPC结构中:
//Takes an array containing strings, returns an xmlrpc array of xmlrpcvals
function xmlrpcpack($input){
if(is_array($input)){
$return = array();
foreach($input as $item){
if(gettype($item) === "array")
$return[] = xmlrpcpack($item);
else
$return[] = new xmlrpcval($item);
}
return new xmlrpcval($return, "array");
}else{
debug_print_backtrace();
}
}