用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4810|回复: 2
收起左侧

[Others] 有没有熟悉CI XML-RPC的同学,求助

[复制链接]
发表于 2013-5-28 16:52:51 | 显示全部楼层 |阅读模式
我测试rpc,总是返回   This is not a known method for this XML-RPC Server。。折腾一下午了。找了好多资料看,有的说是ci的xmlrpc有bug啥的,也没说出个所以然来。rpc=人品差....

先看代码,RPC服务器方法
PHP复制代码
        function server ()
        {
                $this->load->library('xmlrpc');
                $this->load->library('xmlrpcs');
               
                // 设置接口方法集合
                $config['functions']['Test'] = array('function' => 'link.test');        // 平台余额接口
                $config['object'] = $this;
               
                $this->xmlrpcs->initialize($config);
                $this->xmlrpcs->serve();
        }
复制代码


再看客户端代码:
PHP复制代码
        function index()
        {
                $this->load->library('form_validation');
                $this->form_validation->set_rules('method', 'Request method', 'required');
               
                if ($this->form_validation->run() == false)
                {
                        $this->load->view('index');
                }
                else
                {
                        $post = $this->input->post(null, true);
                        $method = $post['method'];
                        unset($post['method']);
                        $request = json_encode($post);
                       
                        $this->load->library('xmlrpc');
                        $server = site_url('main/server');
                       
                        $this->xmlrpc->server($server, 80);
                        $this->xmlrpc->method($method);
                        $this->xmlrpc->set_debug(true);
                       
                        $request = array( $request);
                        //print_r($request);
                        $this->xmlrpc->request($request);
                       
                        if (!$this->xmlrpc->send_request())
                        {
                                echo $this->xmlrpc->display_error();
                        }
                        else
                        {
                                echo $this->xmlrpc->display_response();
                        }
                }
        }
复制代码


然后在看客户端请求的方法,Link/test, 控制器文件名和类名均为大写
PHP复制代码
        function test ($request)
        {
                $this->load->library('xmlrpc');
                $a = $request->output_parameters();
                //log_message('error',var_export($request, true));
                $a = json_decode($a[0]);
                $response = array(a, 'struct');
               
                return $this->xmlrpc->send_response($response);
        }
复制代码
 楼主| 发表于 2013-5-29 17:32:47 | 显示全部楼层
今天发现个,如果以上几个方法都写在一个控制器里,就可以请求数据返回数据。否则就提示方法不存在
发表于 2013-6-17 11:49:04 | 显示全部楼层
xml-rpc我也弄過,
不過最後還是放棄使用,
改成使用samplexml這個類.

本版积分规则