2013-09-10 4 views
0

Мой стороне клиента:отправить XmlRpc сервер, используя codegniter

<?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); 
    } 
} 

} 

?> 

стороне сервера:

<?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); 
    } 

} 

?> 

я пытаюсь опубликовать данные с помощью Firebug консоли

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"); 

но получить 404 Не найден, когда я его выполнил. как я могу проверить свой запрос xmlrpc? Я попытался передать параметры непосредственно в URL-адресе, как на сервере REST, но не смог точно понять, как узнать, отвечает ли мой метод. спасибо.

ответ

0

была опечатка, она должна была быть v1 вместо vi в запросе url, теперь он отвечает штрафом.