【问题标题】:How to convert cURL to Guzzle GET如何将 cURL 转换为 Guzzle GET
【发布时间】:2021-02-19 17:51:33
【问题描述】:

首先:Stack Overflow 的第一个问题,非常荣幸! :D

如何将以下 curl 转换为 Guzzle?

curl -u USER_KEY:USER_SECRET https://api.apiexample.com/example/oauth/oauth?grant_type=client_credentials

我尝试了以下方法,但我一直收到 403 - 禁止错误:

    $res = $client->request('GET', 'https://api.apiexample.com/example/oauth/oauth',[
        'auth' => ['USER_KEY', 'USER_SECRET'],
        'header' => [
                'Content-Type' => 'application/x-www-form-urlencoded'
        ],
        'form_params' => [
            'grant_type' => 'client_credentials'
        ]
    ]);

我的代码可能有什么问题?

编辑:忘记一件事:此请求返回一个持续 30 分钟的令牌。仅在令牌即将到期时才运行此功能的任何提示?

【问题讨论】:

  • 如果你传递的是form_params,那么就不需要header content-type application/x-www-form-urlencoded,它是由form_params设置的,也请告诉你的auth是basic还是digest
  • 设法处理它。 auth 是基本的,所以确实它根本不需要标头,至少在我正在处理的 API 上,它设法为我提供了一个令牌,以在其他请求中用作 Bearer。感谢您的提示!

标签: php laravel curl guzzle


【解决方案1】:

我建议您重新格式化您的请求,将您的常量值放入Client 对象声明中,并将request 包装在try-catch 块中。 try-catch 块提供了额外的好处,它可以帮助您调试响应。随意更改 catch 语句。

$client = new Client([
    'base_uri' => 'https://api.apiexample.com/example/',
    'auth' => [
        'USER_KEY',
        'USER_SECRET'
    ]
]);
try {
    $response = $client->request( 'GET', 'oauth/oauth', [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
        ],
        'form_params' => [
            'grant_type' => 'client_credentials'
        ]
    ]);
} catch (Exception $e) {
    error_log($e->getCode());
    error_log($e->getMessage());
    error_log(print_r($e->getTrace(), true));
}

【讨论】:

  • 哇哈哈谢谢你的回答!我会重新格式化成这样!
猜你喜欢
  • 1970-01-01
  • 2021-09-08
  • 2013-10-30
  • 2016-03-21
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 2017-01-13
相关资源
最近更新 更多