chandan kumar chandan kumar - 3 months ago 10
JSON Question

PHP cURL, POST JSON getting error in php curl

curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"firstname":"Mike","lastname":"Doel","customer_id":"12345","email":"test_api_user@gmail.com.com"}' -u API-key: APIURL(http://)


above statement is running well in command but i am unable to achive the same by php code below is my code

$url="https://apiurl";
$data=array("firstname"=>"Mike",
"lastname"=>"Doel",
"customer_id"=>"12345",
"email"=>"test_api_user@gmail.com"
);
$data_json=json_encode($data); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',"Accept: application/json","api-key"));
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);




Answer
In CURL, for api key you need to pass username:password , if you going to access in php code 

$url="https://apiurl"; 
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
        CURLOPT_USERPWD => 'username:password',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 300000,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_HTTPHEADER => array(
            "accept: application/json",
            "content-type: application/json"
        ),
    CURLOPT_POSTFIELDS => $postfields,
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

return $response;

Try it once..hopefully it will work for you.