我一直在使用apikitchen来反向工程api,我不熟悉php中的curl库。我想知道是否有人可以解释为什么我正在制作的请求在php中使用curl时返回401错误,但它在api kitchen上工作正常。
在api kitchen中添加标题并点击执行后,我的请求标题看起来像这样(我刚刚在apikitchen中添加了deviceId和Authorization标题):
Host: somesubdomain.somedomain.com
Deviceid: someID
Authorization: Token someID
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
我指向的主机在示例中显然是假的。真实主机使用GET请求获取公司名称/订单号,然后使用deviceID和授权令牌对用户进行身份验证。
以下是我用于php脚本的代码:
<?php
echo 'starting...';
$curl = curl_init('https://somesubdomain.somedomain.com/ws/orders?wildcard=0804400');
$headers = array('deviceId'=>'someID',
'Authorization'=>'Token someID',
'Host'=>'somesubdomain.somedomain.com');
$options = array(CURLOPT_RETURNTRANSFER=>1,
CURLOPT_VERBOSE=>1,
CURLOPT_USERAGENT=>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0',
CURLOPT_HTTPHEADER=>$headers);
curl_setopt_array($curl, $options);
echo curl_getinfo($curl);
$response = curl_exec($curl);
if(!$response){
echo curl_getinfo($curl);
die('ERROR: "' . curl_error($curl) . '" - CODE: ' . curl_errno($curl));
}else{
echo $response;
}
curl_close($curl);
echo "<br>Done!";
?>
但我得到的是401错误:
type Status report
message
description This request requires HTTP authentication ().
就像我之前说的那样,在api kitchen中使用相同的确切登录凭据,但是当我使用curl汇编请求时,它不会。
感谢任何帮助!
答案 0 :(得分:1)
可能是auth格式不正确。你需要做一些像
这样的事情$headers = array('deviceId:someID',
'Authorization:Token someID',
'Host:somesubdomain.somedomain.com');