Php 使用codeigniter向xmlrpc服务器发送post请求
我的客户方:Php 使用codeigniter向xmlrpc服务器发送post请求,php,codeigniter,xml-rpc,xmlrpcclient,Php,Codeigniter,Xml Rpc,Xmlrpcclient,我的客户方: <?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->
<?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);
}
}
}
?>
但是当我执行404时,找不到它。如何测试xmlrpc请求?
我曾尝试像在REST server中一样直接在url中传递参数,但无法准确理解如何查看我的方法是否响应。有一个输入错误,请求url中应该是v1而不是vi,现在响应良好
<?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);
}
}
?>
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");