我一直在使用apikitchen对api进行逆向工程,但我不熟悉php中的curl库。 我想知道是否有人可以解释为什么当我在 php 中使用 curl 时我发出的请求返回 401 错误,但它在 api kitchen 上工作正常。
在 api kitchen 中添加标头并点击执行后,我的请求标头如下所示(我刚刚在 apikitchen 中添加了 deviceId 和授权标头):
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 组装请求时,它不会。
任何帮助不胜感激!
可能是身份验证格式不正确。你需要做类似的事情
$headers = array('deviceId:someID',
'Authorization:Token someID',
'Host:somesubdomain.somedomain.com');