我正坐在这里使用curl在php中的rest api中发布帖子请求。为此,我有api密钥和auth密钥,我目前在请求中包含post值。但我继续在我的响应中获取HTML而不是JSON数据(它应该是)给我一个401未经授权的错误。
我注意到在这些情况下,您经常需要制作自定义标题来授权自己(我猜测我需要使用我的身份验证密钥,在标题中以某种方式)。
这是我的代码:
$post = [
'apikey' => $apiKey,
'authkey' => $authKey,
'name' => $reknr,
'description' => $opgave,
'clientId' => $clientId,
'orderTypeId' => $typeId,
'contactAddressId' => $addressId,
'theirref' => $ref,
'reqno' => $reknr
];
// Set api link
$ch = curl_init('https://app.minuba.dk/api/1/Order');
// Set return value to true
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Configure header
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: Basic '.$authKey,
'Content-Type: application/json')
);
// Add post fields
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
// execute!
$response = curl_exec($ch);
// close the connection, release resources used
curl_close($ch);
API文档在发布请求时没有说明您如何授权自己,在获取请求期间,您只需将apikey和authkey作为普通参数包含在内,它就可以正常工作。
我的问题是,我如何知道如何配置我的标题以便API授权我?文档对此没有任何说明或提供任何解释,除非提及您需要apikey和authkey才能获得访问权。
我承认我对http标头的理解是有限的,但我怎么知道如何为这个特定的api配置它?
更新:
发现标题响应给了我这一行: WWW-Authenticate:Basic realm =" Minuba REST API"
这告诉我,我用来验证的方法应该是正确的吗?那我为什么还要上401?