2016-08-29 177 views
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://) 

上述声明是在命令运行良好,但我无法通过PHP代码才达到相同的下面是我的代码PHP卷曲,POST JSON得到错误的PHP卷曲

$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); 
+0

已通过任何用户名或密码的API密钥? –

+0

请参阅http://stackoverflow.com/questions/3062324/what-is-curl-in-php –

回答

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; 

尝试一次..希望它会为你工作。

+0

非常感谢它的工作.. :) –

0

此:

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

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

不等于-u指定HTTP基本验证,其中username:password。你SETOPT只是馅该用户名作为HTTP头的名称,这是不是基本身份验证凭据如何显示

你应该有

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

代替。