无法通过api发送json数据

时间:2017-04-10 07:24:42

标签: php json codeigniter api curl

我正在使用外部api,我已经获得了与该api相关的以下详细信息

API KEY (Mandatory Header) :- apikey : "xxxxx"
Stage Server Base Url :- https://example.com
To add Details API :- POST(/student/{student_id})

我打算做的是:

  

我将通过codeigniter表单从用户那里收集数据   然后将数据转发到上面的api并得到响应   api,因此,如果它成功,那么将进行更进一步   动作或者需要显示错误消息

但是出于测试目的,我使用静态数组并尝试将其发送到api。

实际发生的事情是我得到一个空白的结果,因此不确定它是否正常工作。

以下是我的代码

<?php
$apiKey = 'xxxx';
$url = 'https://www.example.com';
$data = array("name"=> "ABC","location"=> "loc","class"=> 'tenth',"area"=> "area");

$ch = curl_init( $url );
$payload = json_encode( $data );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
$headers= curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json','Authorization: ' . $apiKey));
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$result = curl_exec($ch);
curl_close($ch);
echo "<pre>$result</pre>";

?>

PS:我是api和curl的新手,所以一点点解释和解决方案将不胜感激

2 个答案:

答案 0 :(得分:1)

$ch = curl_init('http://www.example.com');                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST');                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Accept: application/json',                                                                                
    'Authorization:Basic '.$apikey,
    )                                                                       
);                                                                                                                  
$result = json_decode(curl_exec($ch));

尝试在授权标头中添加其Basic或Bearer。希望它适合你。

答案 1 :(得分:-1)

你应该使用如下声明

curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));