Wouter den Ouden
Wouter den Ouden

Reputation: 1523

PHP cURL Put, no permission (403 forbidden)

I made a script that uses the Mobile.de API. It worked fine on their test environment, only difference with the live environment is the proxy. So in my cURL I removed the proxy. For any POST call this works just fine, but for my PUT call it doesn't work at all.

So let's say I sent the following with for example Postman:

PUT /seller-api/sellers/123/ads/456
Host: services.mobile.de
Content-Type: application/vnd.de.mobile.api+json
Authorization: Basic abcdef12345=

And I put in the right JSON, it works just fine.
And this is the script I use in PHP:

function updateVehicle($seller, $voertuig_id, $json) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://services.mobile.de/seller-api/sellers/' . $seller . '/ads/' . $voertuig_id);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
    curl_setopt($ch, CURLOPT_USERPWD, USERNAME . ':' . PASSWORD);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Host: services.mobile.de',
        'Content-type: application/vnd.de.mobile.api+json'
    ));

    $output = curl_exec($ch);

    curl_close($ch);

    return $output;
}

In return I get the 403 forbidden. 'You don't have permission to access /seller-api/sellers/123/ads/456 on this server.'

I already printed out al curl info and saw that all the headers are there and everything seems just fine, but why don't I have permission.

Contacted Mobile.de already but they say it's something in my code.

Upvotes: 1

Views: 2554

Answers (1)

Wouter den Ouden
Wouter den Ouden

Reputation: 1523

So after much debugging I found out it was a space after the $voertuig_id that got me an 403 forbidden error. :S

Upvotes: 1

Related Questions