PHP XML RPC - 如何处理返回的数组

时间:2012-08-29 07:43:15

标签: php xml xml-rpc rpc

我正在使用http://phpxmlrpc.sourceforge.net中的PHP XML RPC类。 我创建了一个客户端,并将我的方法与struct / array一起发送到服务器,我得到了一些响应,但我不知道如何处理响应以使用foreach()或直接获取响应值。

也许有些人可能会帮助我?

我的代码:

include("../../lib/xmlrpc.inc");
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
$client=new xmlrpc_client("/xmlrpc.php", "www.domain.de", 443);
$client->setDebug(0);
$auth= new xmlrpcval(
    array(
    "username" => new xmlrpcval("user"),
    "password" => new xmlrpcval('pw'),
), "struct");

$search = new xmlrpcval(
    array(
    'EMAIL'=> new xmlrpcval('info@domain.de')
),'struct');

$message=new xmlrpcmsg('doProfileFindBy',
    array(
        $auth,
        new xmlrpcval(964296, "int"),
        $search

    ),'struct'
);

$r = $client->send($message, 0, 'https');
echo '<pre>';
var_dump($r);
echo '</pre>';

我确实收到了我正在寻找的数据的响应,但它没有被格式化为将其用作数组左右。

希望有人可以帮助我。 非常感谢!

2 个答案:

答案 0 :(得分:0)

你可以像这样循环遍历响应数组(用于测试):

foreach($r as $key => $value)
{
  echo $key." : ".$value."<br>" ;
}

或者您需要任何特定的键值对。

答案 1 :(得分:0)

基于您的var_dump和XML RPC类的文档http://phpxmlrpc.sourceforge.net/doc-2/ch07s04.html您应该执行以下操作:

$r = $client->send($message, 0, 'https');
$value = $r->value();

然后关于http://phpxmlrpc.sourceforge.net/doc-2/ch07.html和响应的结构您应该能够解析出您需要的值。你的响应的结构有点复杂,包含具有数组类型的属性的对象,该属性包含具有数组属性的另一个对象,并且一次又一次,直到有可能要解析的值数组...