CodeIgniter Passing POST data from RestClient to RestServer API

Sobiaholic picture Sobiaholic · Jul 10, 2014 · Viewed 15.8k times · Source

I've spent my whole day trying to figure out this problem. Posting this issue here is my last hope. I hope someone can help to continue working on my first job.

So, POST works fine when directly passing data from my views to the RestServer directly. However, RESTServer API is not able to find POSTs data sent from the RestClient.

Here are the snippets:

RestClient API:

        $ver = 'v1';
        $config = array('server'          => base_url()."v1",
                        'api_key'         => 'xxxxxx',
                        'api_name'        => 'X-API-KEY',
                        'http_user'       => 'admin',
                        'http_pass'       => 'xxxxx',
                        'http_auth'       => 'basic',
                );

        $this->rest->initialize($config);
        $this->rest->format('application/json');
        $param = array(
                'id' => $this->input->post('id'), // works fine here
                'name' => $this->input->post('name')
                );
        $user = $this->rest->post('employer/postNewProject', $param, 'json');


        //if (isset($user->errors)) show_404('admin');
        $this->rest->debug();

RestServer API

class Employer extends REST_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->lang->load("application");
        $this->load->library("users/auth"); 
        Datamapper::add_model_path( array( APPPATH."modules" ) );
    }

    public function postNewProject_post()
    {  
        // I tired $this->post() and $this->input->post() but both not finding the data
        $message = array("id" => $this->post("id"), "name" => $this->input->post("name"));
        $this->response($message, 200); // 200 being the HTTP response code
    }
}

Results:

Response when using $this->post('id');
{"id":false}

Response when using $this->post();
{"id":[]}

Note: I've replaced the POSTS requests with hardcoded data, and still the RestServer is not able to recieve the data from my RestClient.

If you need me to provide anything else, please ask.

Thank you in advance.

Answer

Abdul Manan picture Abdul Manan · Jun 12, 2015

i figure out when and empty 3rd perameter is passed(or when you remove 3rd param) then it works.

    //Not working
    $user = $this->rest->post('employer/postNewProject', $param, 'json');
    //when i change to this ,it's working
     $user = $this->rest->post('employer/postNewProject', $param.'');
     //or 
    $user = $this->rest->post('employer/postNewProject', $param);

if some one has a better solution so that i can award bounty.