dongqiao8417 2014-08-03 20:31
浏览 239

无法使用guzzle服务向我的请求添加授权标头

I have following code:

Client class


    use GuzzleHttp\Client;
    use GuzzleHttp\Command\Guzzle\GuzzleClient;
    use GuzzleHttp\Command\Guzzle\Description;

     class ApiClient extends Client
     {
       public static function factory($config = array())
       {
        $config = array_merge($config, json_decode(file_get_contents(__DIR__.'/Resources/config/client.json'), TRUE));

        $guzzleClient = new GuzzleClient(new Client(), new Description($config));

        return $guzzleClient;
    }
}

Config settings

   {
    "operations": {
        "me":{
            "description": "Returns user profile details",
            "httpMethod": "GET",
            "uri": "users/me",
            "parameters": {
                "token": {
                    "type":"string",
                    "location": "header",
                    "sentAs": "Authorization"
                }
            }
        }
    }
}

```

Usage

$config = [
    'baseUrl' => 'http://localhost/api/v1/'
];
$api_client = ApiClient::factory($config);

$token   = 'Bearer V6tBMG6FKL7wLxZh116IGdvfDUtOvlFIJI61nrHp';
$command = $api_client->me(array(
    'token' => $token
));

// returns an array of results
$results = $command->execute();

And I want add custom Autorizarion Bearer header to all requests, how I can do that? Add header to $client doesn't help cuz $command after call me method is NULL.

Thanks

UPDATED

Found error, It doesn't work cuz guzzle 4 configuration works in different way:

{
    "operations": {
        "me":{
            "description": "Return solidoptics user profile details",
            "httpMethod": "GET",
            "uri": "users/me",
            "responseModel": "getResponse",
            "parameters": {
                "token": {
                    "type":"string",
                    "location": "header",
                    "sentAs": "Authorization",
                    "required": true
                }
            }
        }
    },
    "models": {
        "getResponse": {
            "type": "object",
            "additionalProperties": {
                "location": "json"
            }
        }
    }
}

So now issue is not actual for me.

  • 写回答

2条回答 默认 最新

  • doujingya1166 2014-08-03 20:50
    关注

    Try configuring the default request options for the client, doing something like this:

    $client = new Client(array(
        'defaults' => array(
            'headers' => array(
                'Authorization' => '...',
             ),
        ),
    ));
    

    And also make sure you use $client, not new Client() when calling new GuzzleClient!

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题