无法通过API
问题描述:
我使用的地方我一直在考虑有关该API以下细节外部API发送JSON数据无法通过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_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
+1
OP正在发送JSON,而不是'应用程序/ x-WWW的形式urlencoded' – Phil
答
$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或承载。希望对你有效。
什么是响应状态码?你确定你打算通过'Authorization'头部发送API密钥吗?通常这个特殊的头文件包含一个授权方案,比如'Basic'或'Bearer' – Phil
,如果你是api的新用户,请使用GuzzleHttp。这个库将解决你的大部分问题。 http://docs.guzzlephp.org/ –
@Phil我没有得到任何回应,我无法弄清楚我错在哪里 – user3732711