Я пытаюсь получить некоторую информацию от last.fm с помощью 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(); }
Единственный ответ, который я всегда получаю: Недопустимые параметры. В вашем запросе отсутствует требуемый параметр
Он пробовал некоторые варианты с массивом запросов, но он просто не работает так, как я его обрабатываю …
Вы близки. $request
действительно должен быть написан следующим образом:
$request = array( array( array( 'user'=>'rj', 'api_key'=>'b25b959554ed76058ac220b7b2e0a026' ), 'struct' ) );
Фактический запрос, созданный конструкциями класса XML-RPC CodeIgniter, будет выглядеть следующим образом:
<?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. Обратите внимание, что вы должны «отправить свои параметры как именованные аргументы, используя структуру в первом узле param». Помня об этом, в документах CodeIgniter указано:
Если вы используете типы данных, отличные от строк, или если у вас несколько разных типов данных, вы поместите каждый параметр в свой собственный массив с типом данных во второй позиции.
Надеюсь, это поможет.