douzongluo7542 2014-12-16 21:41
浏览 43
已采纳

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

I have been using apikitchen to reverse engineer an api for work and I'm unfamiliar with the curl library in php. I was wondering if someone could explain why the request I'm making returns a 401 error when I use curl in php, but it works fine on api kitchen.

My requests headers look like this after adding headers in api kitchen and hitting execute(I just added the deviceId and Authorization header in apikitchen):

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

The host I am pointing to is obviously fake in the example. The real host uses GET requests to grab a company name/order number, then uses the deviceID and Authorization token to authenticate the user.

Here is the code I am using for the php script:

<?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!";
?>

But all i get is a 401 error:

type Status report

message

description This request requires HTTP authentication ().

Like I said before, using the same exact login credentials works in api kitchen, but when I assemble the requests using curl, it does not.

Any help is appreciated!

  • 写回答

1条回答 默认 最新

  • dscpg80066 2014-12-16 21:56
    关注

    It is probably the auth format that is incorrect. You need to do something like

    $headers = array('deviceId:someID',
                        'Authorization:Token someID',
                        'Host:somesubdomain.somedomain.com');
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制