简体   繁体   English

使用 codeigniter 向 xmlrpc 服务器发送 post 请求

[英]send post request to xmlrpc server using codeigniter

My client side:我的客户端:

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Api extends CI_Controller {

function v1($method)
{
    $server_url = site_url('xmlrpc_server');

    $this->load->library('xmlrpc');

    $this->xmlrpc->server($server_url, 80);
    $this->xmlrpc->method($method);
    $_POST['ip'] = $_SERVER['REMOTE_ADDR'];
    $request = array(
        array(
            $_POST,
            'struct'
        ),            
    );

    $this->xmlrpc->request($request);

    if (!$this->xmlrpc->send_request())
    {
        $json = array("api_version"=>1.0, "status"=>"failure", "site_url"=>  site_url(), "message" =>  $this->xmlrpc->display_error());
    }
    else
    {
        $json = array("api_version"=>1.0, "status"=>"good", "site_url"=>  site_url());
        $json['data'] = $this->xmlrpc->display_response();    
        echo json_encode($json);
    }
}

}

?>

Server side:服务器端:

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Xmlrpc_server extends CI_Controller {

    function index() {
        $this->load->library('xmlrpc');
        $this->load->library('xmlrpcs');

        $config['functions']['login'] = array('function' => 'Xmlrpc_server.login');

        $this->xmlrpcs->initialize($config);
        $this->xmlrpcs->serve();
    }

    function login($request) {
        $parameters = $request->output_parameters();
        $xml_rpc_rows = array();
        if (!isset($parameters['0']["loginid"]) || !isset($parameters['0']["password"])) {
            $xml_rpc_rows['login'] = false;

            $xml_rpc_rows['message'] = "credentials required";
        } else {
            $myusername = $parameters['0']["loginid"];
            $mypassword = $parameters['0']["password"];
            $this->load->model('Users');
            $resultArray = $this->Users->userExist($myusername, $mypassword);


            if (count($resultArray) > 0) { // && $resultArray[0]['locked'] > 0
                $xml_rpc_rows['login'] = true;
                $xml_rpc_rows['message'] = "logged in successfully";
            } else {
                $xml_rpc_rows['login'] = false;
                $xml_rpc_rows['message'] = "user not found";
            }
        }

        $response = array(
            $xml_rpc_rows,
            'struct');
        return $this->xmlrpc->send_response($response);
    }
}

?>   

I am trying to post data using firebug console我正在尝试使用萤火虫控制台发布数据

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://example.com/api/vi/login?");
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("loginid=username1&password=pass");

but getting 404 Not Found when I execute it .但是当我执行它时得到 404 Not Found 。 how can I test my xmlrpc request?如何测试我的 xmlrpc 请求? I have tried passing parameters directly in the url as in REST server but unable to understand exactly how to see if my method is responding .我曾尝试像在 REST 服务器中一样直接在 url 中传递参数,但无法确切了解如何查看我的方法是否响应。

有一个错字,它应该是 v1 而不是请求 url 中的 vi 现在它响应良好。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM