Hope this helps you.
$service_url = 'http://mywebsite/end/user/login'; // .xml asks for xml data in response $post_data = array( 'username' => 'user2', 'password' => 'pass1', ); $post_data = http_build_query($post_data, '', '&'); // Format post data as application/x-www-form-urlencoded // set up the request $curl = curl_init($service_url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // have curl_exec return a string curl_setopt($curl, CURLOPT_POST, true); // do a POST curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // POST this data // make the request curl_setopt($curl, CURLOPT_VERBOSE, true); // output to command line $response = curl_exec($curl); curl_close($curl); // parse the response $xml = new SimpleXMLElement($response); $session_cookie = $xml->session_name .'='. $xml->sessid; if(empty($xml->session_name) && empty($xml->sessid)){ echo 'Wrong';exit; } $service_url = 'http://mywebsite/end/user/token'; // .xml asks for xml data in response $curl = curl_init($service_url); curl_setopt($curl, CURLOPT_POST, true); // do a POST curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // POST this data curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // have curl_exec return a string curl_setopt($curl, CURLOPT_COOKIE, "$session_cookie"); // use the previously saved session // make the request curl_setopt($curl, CURLOPT_VERBOSE, true); // output to command line $csrf_token = curl_exec($curl); curl_close($curl); $xml = new SimpleXMLElement($csrf_token); $csrf_token = $xml->token; $csrf_header = 'X-CSRF-Token: ' . $csrf_token; // REST Server URL $request_url = 'http://mywebsite/end/user/8&XDEBUG_SESSION_START=netbeans-xdebug'; $user_data = array('current_pass' => 'pass1', 'pass' => 'testing'); // cURL $curl = curl_init($request_url); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-type: application/json',$csrf_header)); // Accept JSON response curl_setopt($curl, CURLOPT_PUT, TRUE); //curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($user_data)); // Set POST data curl_setopt($curl, CURLOPT_HEADER, TRUE); // FALSE); // Ask to not return Header curl_setopt($curl, CURLOPT_COOKIE, "$session_cookie"); // use the previously saved session curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl, CURLOPT_FAILONERROR, TRUE); // Emulate file. $serialize_args = json_encode($user_data); $putData = fopen('php://temp', 'rw+'); fwrite($putData, $serialize_args); fseek($putData, 0); curl_setopt($curl, CURLOPT_INFILE, $putData); curl_setopt($curl, CURLOPT_INFILESIZE, strlen($serialize_args)); $response = curl_exec($curl); curl_close($curl);