使用 codeigniter 和 xmlrpc 从 lastfm 请求用户最近的曲目

发布于 2024-10-14 22:23:56 字数 517 浏览 1 评论 0原文

我正在尝试使用 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();
}

我总是得到的唯一响应是:参数无效 - 您的请求缺少必需的参数

它尝试了请求数组的一些变体,但它根本无法按照我处理它的方式工作......

I'm trying to get some information from last.fm with Codeigniter.

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

The only response I always get is: Invalid parameters - Your request is missing a required parameter

It tried some variations with the request array, but it simply doesn't work the way I handle it...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故人的歌 2024-10-21 22:23:56

你很接近了。 $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 请求 此处。请注意,您应该“使用第一个参数节点中的结构将参数作为命名参数发送”。记住这一点,CodeIgniter 文档指出:

如果您使用的数据类型不是
字符串,或者如果你有几个
不同的数据类型,您将放置
每个参数放入其自己的数组中,
与第二个中的数据类型
位置。

希望有帮助。

You're close. $request should actually be written like this:

$request = array(
                 array(
                       array(
                             'user'=>'rj', 
                             'api_key'=>'b25b959554ed76058ac220b7b2e0a026'
                            ),
                       'struct'
                      )
                );

The actual request that CodeIgniter's XML-RPC class constructs will then look like this:

<?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>

You can see an example Last.fm XML-RPC request here. Note that you should "send your params as named arguments using a struct in the first param node." Keeping that in mind, the CodeIgniter docs state:

If you use data types other than
strings, or if you have several
different data types, you will place
each parameter into its own array,
with the data type in the second
position.

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文