为什么这个请求在apikitchen中工作但在我的PHP脚本中不起作用?

时间:2014-12-16 21:41:41

标签: php curl

我一直在使用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汇编请求时,它不会。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

可能是auth格式不正确。你需要做一些像

这样的事情
$headers = array('deviceId:someID',
                    'Authorization:Token someID',
                    'Host:somesubdomain.somedomain.com');