XML-RPC PHP solo envía una matriz vacía

Estoy ejecutando esto en un servidor, usando la implementación de Joomla de XMLRPC para PHP. Cualquier xmlrpcval que intente enviar (incluyendo null) no se envía. En su lugar, se envía una matriz vacía.

Código maestro correspondiente. Probé diferentes variedades de xmlrpcmsg enviado (desde una matriz complicada hasta una cadena simple):

$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);

Código esclavo (no la funcionalidad real, solo tratando de hacer que funcione:

function insertContent($params){        
    $data = $params->getParam(0);
    $result = gettype($data);

    return new xmlrpcresp(new xmlrpcval($result));
}

Los códigos de retorno muestran que $data es de tipo NULL. ¿Qué estoy haciendo mal?

preguntado el 12 de junio de 12 a las 19:06

1 Respuestas

Resulta que XMLRPC es muy estricto con respecto a los datos que aceptará (algo que no se refleja del todo en el documentos). Una matriz no puede contener objetos sin formato, incluso si esa matriz se ha convertido en un objeto XMLRPC. El siguiente código envuelve una matriz y todo lo que contiene en una estructura 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();
    }
}

Respondido 17 Jul 12, 14:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.