0

私はこれをサーバー上で実行しており、JoomlaのPHP用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ます。私は何が間違っているのですか?

4

1 に答える 1

1

結局のところ、XMLRPCは、受け入れるデータについて非常に厳密です(ドキュメントに完全に反映されていないもの)。配列が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();
    }
}
于 2012-07-17T13:41:46.187 に答える