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!