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

Posted

技术标签:

【中文标题】PHP XML RPC - 如何处理返回的数组【英文标题】:PHP XML RPC - How to handle the returned array 【发布时间】:2012-08-29 07:43:14 【问题描述】:

我正在使用来自http://phpxmlrpc.sourceforge.net 的 PHP XML RPC 类。 我创建了一个客户端并将带有结构/数组的方法发送到服务器,我得到了一些响应,但我不知道如何处理响应以使用 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>';

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

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

【问题讨论】:

能否请您告诉我们返回数据的格式(来自您的 var_dump 的内容)?这对我们很有帮助,因此对您有帮助...... 【参考方案1】:

根据您的 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 和响应的结构你应该能够解析出你需要的值。您的响应的结构有点复杂,包含具有数组类型属性的对象,该对象包含另一个具有数组属性的对象,一次又一次,直到出现您可能想要解析出来的值数组...

【讨论】:

【参考方案2】:

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

foreach($r as $key => $value)

  echo $key." : ".$value."<br>" ;

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

【讨论】:

嘿,它会返回:可捕获的致命错误:xmlrpcval 类的对象无法转换为字符串 该行是“echo $key”... 它是bcoz,它可能返回一个对象类型数组。你能把var_dump()的输出给我们吗。到时回复你会很有帮助。 这里是:pastie.org/4609025 - 我无法回答我自己的问题,所以我粘贴了它。

以上是关于PHP XML RPC - 如何处理返回的数组的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 XML-RPC 中的错误响应?

该函数需要 PHP 支持 XML,这该如何处理

如何处理 PHP 代码中的 HTTP/1.1 403 Forbidden

PHP如何处理整数索引的非连续键控数组?

php 通过POST传多个值 如何处理

关于Ajax处理 返回的XML