2016-09-19 3 views
1

Ich habe gerade Cake auf 3.3 von 3.1 aktualisiert und habe anscheinend einige meiner http Clients gebrochen.Neuer HTTP-Client inkorrekt Content-Type erzeugt 415 Fehler

Das Problem scheint auf jede Anfrage ohne eine spezifische Content-Type gesetzt werden.

Zum Beispiel, mir Durchführung dieser Anfrage:

curl -X GET -H "Authorization: Bearer kEnG562yz5bhE9igXf2YTcZ2bu0z" "https://developer.api.autodesk.com/project/v1/hubs"

Mit folgenden http Client:

$http = new Client([ 
    'headers' => [ 
     'Authorization' => 'Bearer ' . $token->token 
    ] 
]); 

$response = $http->get('https://developer.api.autodesk.com/project/v1/hubs'); 

Dies funktioniert auf meinem Testserver Cake\Network\Http\Client aber auf meinen neu aktualisierten lokalen Server fein mit mit Cake\Http\Client erhalte ich:

object(Cake\Http\Client\Response) { 
    [protected] code => '415' 
    [protected] reasonPhrase => 'Unsupported Media Type' 

Wo alle Anfragen mit Content-Type scheinen ohne Probleme zu funktionieren.

$http = new Client(['headers' => [ 
     'Content-Type' => 'application/json', 
     'Authorization' => 'Bearer ' . $token->token 
    ] 
]); 

Funktioniert gut auf beiden Servern.

Ich bin mir ziemlich sicher, dass es die Content-Type stoppt mich, ich habe ein paar ausprobiert, aber ich stech wirklich im Dunkeln.

Kann mir jemand den Inhaltstyp mitteilen, der standardmäßig von Cake\Network\Http\Client verwendet wurde oder welchen Inhaltstyp ich verwenden sollte, um eine solche einfache Anfrage zu senden.

Dank

Antwort

0

Da es sich um eine GET-Anfrage gibt es keine Inhalte-Typ erforderlich.

Vor CakePHP 3.3 in ./vendor/cakephp/cakephp/src/Network/Http/Client.php können Sie sehen, dass der Inhaltstyp nur auf einen Standard ('application/x-www-form-urlencoded ') wo eine Reihe von Daten vorhanden ist, in diesem Fall wäre es nicht gesetzt worden.

Wenn es mit der Anwendung/JSON arbeitet, würde ich dies verwenden, um zu rollen und überprüfen Sie mit Autodesk, um zu sehen, welche Art von Inhalten die API auf diese Anfrage erwartet.

+0

Prost Simon Ich denke du hast recht, dass es nicht 'Content-Type' ist, aber es funktioniert nicht mit' application/json'. Der Anruf war vor dem Update in Ordnung. Etwas hat sich im HTTP-Client geändert, der die Anfrage bricht. –