0

I've been given the following example in order to post data to a API url

curl --request POST \
  --url https://apiurl \
  --header 'auth-token: {{token}}' \
  --header 'content-type: application/json' \
  --data '{
  "user": {
    "email": "my@email.com",
    "name": "James",
    "tel": "0000000"
  }
}'

I got my cURL working using the following code but I need to post the user parameters as above like email, name, tel etc.

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_HTTPHEADER => array('Cache-Control: no-cache', 'auth-token: '.$token)

));
$response = curl_exec($curl);
curl_close($curl);

How can I post the fields as the example states using my code?

Ahmed
  • 1,403
  • 4
  • 21
  • 44
  • 1
    Possible duplicate of [How do I use arrays in cURL POST requests](https://stackoverflow.com/questions/13596799/how-do-i-use-arrays-in-curl-post-requests) – Nico Haase Dec 10 '18 at 12:16

2 Answers2

0

i use in this way:

<?php
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_RETURNTRANSFER,1);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, array(
    'data'      => '{
  "user": {
    "email": "my@email.com",
    "name": "James",
    "tel": "0000000"
  }
}'    
));
$dados = curl_exec($handle);
curl_close($handle);
echo "$dados";
?>
Jasar Orion
  • 626
  • 7
  • 26
0

This was already answered here: How to POST JSON Data With PHP cURL?

You just need to add like the following:

$payload = json_encode(['user'=> ['email'=>'test@example.com','name'=>'Joe','tel'=>'123e332']] );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $payload );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
Ibraheem
  • 160
  • 1
  • 11