我正在尝试使用Codeigniter从last.fm获取一些信息。
$this->load->library("xmlrpc");
$this->xmlrpc->server("http://ws.audioscrobbler.com/2.0/", 80);
$this->xmlrpc->method("user.getrecenttracks");
$request = array("rj", "b25b959554ed76058ac220b7b2e0a026");
$this->xmlrpc->request($request);
if(!$this->xmlrpc->send_request())
{
echo $this->xmlrpc->display_error();
}
我唯一得到的回应是:参数无效 - 您的请求缺少必需参数
它在请求数组中尝试了一些变体,但它根本不像我处理它那样工作......
答案 0 :(得分:2)
你很亲密。 $request
实际上应该这样写:
$request = array(
array(
array(
'user'=>'rj',
'api_key'=>'b25b959554ed76058ac220b7b2e0a026'
),
'struct'
)
);
CodeIgniter的XML-RPC类构造的实际请求将如下所示:
<?xml version="1.0"?>
<methodCall>
<methodName>user.getrecenttracks</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>user</name>
<value>
<string>rj</string>
</value>
</member>
<member>
<name>api_key</name>
<value>
<string>b25b959554ed76058ac220b7b2e0a026</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
您可以看到一个示例Last.fm XML-RPC请求here。请注意,您应该“使用第一个param节点中的结构将params作为命名参数发送。”记住这一点,CodeIgniter docs状态:
如果使用除以外的数据类型 字符串,或者如果你有几个 不同的数据类型,你会放置 将每个参数放入自己的数组中, 数据类型在第二个 位置。
希望有所帮助。