?

Log in

постинг в ЖЖ средствами XML-RPC Calss - Codeigniter [entries|archive|friends|userinfo]
Русское сообщество пользователей CodeIgniter

[ website | проект CodeIgniter ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| репозитарий проектов wiki ]

постинг в ЖЖ средствами XML-RPC Calss [Aug. 3rd, 2009|12:52 pm]
Русское сообщество пользователей CodeIgniter

ru_codeigniter

[webmechanics]
пытаюсь сделать контроллер для постинга в ЖЖ, используя стандартный класс XML-RPC из CI.
пишу вот такое:

...

<?php

class Lj extends Controller {

    function __construct(){
       
        parent::Controller();
       
        $this->load->library('xmlrpc');

        define('LJ_LOGIN',  'user');
        define('LJ_PASSWD', 'password');
    }
   
    function post() {
   
        $this->xmlrpc->server('http://www.livejournal.com/interface/xmlrpc', 80);
       
        $this->xmlrpc->method('LJ.XMLRPC.getchallenge');
        $request = array();
        $this->xmlrpc->request($request);

        if (!$this->xmlrpc->send_request()) {
            echo $this->xmlrpc->display_error();
        }
       
        else {
           
            $responce = $this->xmlrpc->display_response();
           
            $lj_args['username']  = LJ_LOGIN;
            $lj_args['auth_method']  = "challenge";
            $lj_args['auth_challenge'] = $responce['challenge'];
            $lj_args['auth_response'] = md5($responce['challenge'].md5('cocstot9rk'));
            $lj_args['ver']  = "1";
            $lj_args['event'] = "Вот она, благодать!";
            $lj_args['subject']  = "Тестовая запись из CI";
            $lj_args['year'] = "2009";
            $lj_args['mon'] = "08";
            $lj_args['day'] = "02";
            $lj_args['hour']  = "19";
            $lj_args['min']  = "00";
            $lj_args['security']  = "public";
           
            $this->xmlrpc->method('LJ.XMLRPC.postevent');
            $this->xmlrpc->request($lj_args);
           
            if (!$this->xmlrpc->send_request()) {
                echo $this->xmlrpc->display_error();
            }
           
            else {
                print_r($this->xmlrpc->display_response());
            }
        }
    }
}

При вызове метода post вываливается кучка варнингов типа:

A PHP Error was encountered

Severity: Notice

Message: Undefined offset: 11

Filename: libraries/Xmlrpc.php

Line Number: 627

и в конце Fatal error: Call to a member function serialize_class() on a non-object in /www/maindoor.local/system/libraries/Xmlrpc.php on line 646

Судя по всему, проблема с форматирование аргументов для запроса, а вот в чем именно пробема - ума не приложу. Как жить дальше? :)

LinkReply

Comments:
[User Picture]From: drumrock
2009-08-03 11:31 am (UTC)
А что в Xmlrpc.php в строках 627 и 646 (и окрестности)?
(Reply) (Thread)
[User Picture]From: webmechanics
2009-08-03 11:41 am (UTC)
в 627 идет обработка параметров для запроса:

function XML_RPC_Message($method, $pars=0)
{
parent::CI_Xmlrpc();

$this->method_name = $method;
if (is_array($pars) && count($pars) > 0)
{
for($i=0; $i
[Error: Irreparable invalid markup ('<count($pars);>') in entry. Owner must fix manually. Raw contents below.]

в 627 идет обработка параметров для запроса:

function XML_RPC_Message($method, $pars=0)
{
parent::CI_Xmlrpc();

$this->method_name = $method;
if (is_array($pars) && count($pars) > 0)
{
for($i=0; $i<count($pars); $i++)
{
// $pars[$i] = XML_RPC_Values
$this->params[] = $pars[$i];
}
}
}
(Reply) (Parent) (Thread)
[User Picture]From: webmechanics
2009-08-03 11:42 am (UTC)
в 646 идет формирование XML для запроса

for($i=0; $i
[Error: Irreparable invalid markup ('<count($this->') in entry. Owner must fix manually. Raw contents below.]

в 646 идет формирование XML для запроса

for($i=0; $i<count($this->params); $i++)
{
// $p = XML_RPC_Values
$p = $this->params[$i];
$this->payload .= "<param>\r\n".$p->serialize_class()."</param>\r\n";
}
(Reply) (Parent) (Thread)
[User Picture]From: glebov_gin
2009-11-01 09:53 pm (UTC)
столкнулся с той же проблемой.
есть варианты решения?
(Reply) (Thread)