【问题标题】:How to build Guzzle GET request for -d data in curl如何在 curl 中为 -d 数据构建 Guzzle GET 请求
【发布时间】:2018-12-07 01:49:52
【问题描述】:

我正在尝试在 Laravel 5.5 中使用 Guzzle 访问 API。

curl 中的命令如下:

curl http://apiurl.com/getRequest -d "api_key=token_value"

现在使用 Guzzle,我开始编写如下代码:

$client = new Client(['base_uri' => 'http://apiurl.com/']);

$response = $client->request('GET', 'getRequest', [
             'headers' => [
                           'api_key' => ['token_value']
                         ]
]);
var_dump($response->getStatusCode());
var_dump(json_decode($response->getBody(), true));

现在我可以看到statusCode200getBodyNull。但是当我使用curl 使用相同的请求时,我可以看到完整的数据。

有人可以解决吗?

【问题讨论】:

    标签: laravel curl laravel-5 guzzle guzzle6


    【解决方案1】:

    在比较curlGuzzle 之间的差异时,我强烈建议使用-v (curl) 和debug 请求选项(Guzzle)。详细输出允许对每个软件正在传输的请求进行可视化比较。

    curl 手册页表明 -d--data 发送 POST 请求。

    (HTTP) 将 POST 请求中的指定数据发送到 HTTP 服务器, 就像浏览器在用户填写 HTML 时所做的一样 表单并按下提交按钮。这将导致 curl 通过 使用内容类型向服务器发送数据 应用程序/x-www-form-urlencoded。

    需要进行一对更改才能使用Guzzle 发送所需的请求:

    $response = $client->request('POST', $uri, [
        'form_params' => [
            'api_key' => $key_value,
        ],
    ]);
    

    第一个变化是正在发送的请求类型 (GET => POST)。二是form_params的用法。 form_params 请求选项用于发送application/x-www-form-urlencoded POST 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-13
      • 2018-12-22
      • 2017-04-04
      • 2021-02-19
      • 2015-11-02
      • 1970-01-01
      • 2019-12-17
      • 2019-11-04
      相关资源
      最近更新 更多