0
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"firstname":"Mike","lastname":"Doel","customer_id":"12345","email":"[email protected]"}' -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"=>"[email protected]"); $data_json=json_encode($data); //Curl code $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); 
2

2 Answers 2

0
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.

Sign up to request clarification or add additional context in comments.

Comments

0

This:

 curl_setopt($ch, CURLOPT_HTTPHEADER, array([..snip..], "api-key")); ^^^^^ 

and

curl [..snip..] -u api-key ^^^^^^^^^^ 

are NOT equivalent. -u specifies HTTP Basic authentication, with username:password. Your setopt is just stuffing that username as the NAME of an http header, which is not how basic auth credentials show up

You should have

curl_setopt($ch, CURLOPT_USERNAME, "api-key"); 

instead.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.