新的http客户端不正确的Content-Type会产生415错误

时间:2016-09-19 12:08:26

标签: cakephp cakephp-3.0

我刚刚从3.1更新了Cake到3.3并且似乎打破了我http Clients的部分内容。

问题似乎出现在没有特定Content-Type集的任何请求上。

例如,我正在执行此请求:

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

使用以下http Client

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

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

使用Cake\Network\Http\Client在我的登台服务器上工作正常,但在我使用Cake\Http\Client的新更新的本地服务器上,我得到:

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

Content-Type的任何请求似乎都没有问题。

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

在两台服务器上都能正常工作。

我很确定这是Content-Type阻止我,我已经尝试了一些,但我真的在黑暗中刺伤。

任何人都可以告诉我Cake\Network\Http\Client默认使用的内容类型,或者我应该用什么内容类型发送这样一个简单的请求。

由于

1 个答案:

答案 0 :(得分:0)

由于这是一个GET请求,因此不需要内容类型。

在./vendor/cakephp/cakephp/src/Network/Http/Client.php中的CakePHP 3.3之前,您可以看到内容类型仅设置为默认值(' application / x-www-form) -urlencoded')其中存在一串数据,因此在这种情况下它不会被设置。

如果它正在使用application / json我会使用它来滚动并检查autodesk以查看api对此请求期望的内容类型。