2017-01-04 5 views
0

Ich habe ein Skript erstellt, das die Mobile.de API verwendet. Es funktionierte gut in ihrer Testumgebung, nur der Unterschied zur Live-Umgebung ist der Proxy. Also in meinem cURL habe ich den Proxy entfernt. Für jeden POST-Anruf funktioniert das gut, aber für meinen PUT-Anruf funktioniert es überhaupt nicht.PHP cURL Put, keine Erlaubnis (403 verboten)

Also lassen Sie uns sagen, dass ich folgendes mit zum Beispiel Postman gesendet:

PUT/Verkäufer-api/Verkäufer/123/ads/456
Host: services.mobile.de
Content-Type: application/vnd.de.mobile.api + json
Authorization: Grund abcdef12345 =

und ich habe in der richtigen JSON, es funktioniert gut.
Und das ist das Skript, das ich in PHP verwenden:

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; 
} 

Im Gegenzug erhalte ich die 403 verboten. 'Sie haben keine Zugriffsberechtigung/seller-api/sellers/123/ads/456 auf diesem Server.'

Ich habe bereits al curl info ausgedruckt und sah, dass alle Header da sind und alles scheint gut, aber warum habe ich keine Erlaubnis.

Mobile.de kontaktiert, aber sie sagen, es ist etwas in meinem Code.

+1

Könnten Sie versuchen, dies zu Ihrer Curl-Anfrage hinzuzufügen: 'curl_setopt ($ ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);' – Hatef

+0

Funktioniert nicht. Wenn ich es zu einem POST mache, funktioniert es gut. Header scheinen auch gut zu sein. –

Antwort

0

Also nach viel Debugging fand ich heraus, es war ein Leerzeichen nach der $ voertuig_id, die mir einen Fehler 403 verboten hat. : S