Curl and PHP - how can I pass a json through curl by PUT,POST,GET Curl and PHP - how can I pass a json through curl by PUT,POST,GET php php

Curl and PHP - how can I pass a json through curl by PUT,POST,GET


PUT

$data = array('username'=>'dog','password'=>'tall');$data_json = json_encode($data);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_json)));curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$response  = curl_exec($ch);curl_close($ch);

POST

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$response  = curl_exec($ch);curl_close($ch);

GET See @Dan H answer

DELETE

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$response  = curl_exec($ch);curl_close($ch);


You can use this small library: https://github.com/ledfusion/php-rest-curl

Making a call is as simple as:

// GET$result = RestCurl::get($URL, array('id' => 12345678));// POST$result = RestCurl::post($URL, array('name' => 'John'));// PUT$result = RestCurl::put($URL, array('$set' => array('lastName' => "Smith")));// DELETE$result = RestCurl::delete($URL); 

And for the $result variable:

  • $result['status'] is the HTTP response code
  • $result['data'] an array with the JSON response parsed
  • $result['header'] a string with the response headers

Hope it helps


For myself, I just encode it in the url and use $_GET on the destination page. Here's a line as an example.

$ch = curl_init();$this->json->p->method = "whatever";curl_setopt($ch, CURLOPT_URL, "http://" . $_SERVER['SERVER_NAME'] . $this->json->path . '?json=' . urlencode(json_encode($this->json->p)));curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$output = curl_exec($ch);curl_close($ch);

EDIT: Adding the destination snippet... (EDIT 2 added more above at OPs request)

<?phpif(!isset($_GET['json']))    die("FAILURE");$json = json_decode($_GET['json']);$method = $json->method;...?>