Laravel 如何在curl中为-d数据构建Guzzle GET请求

Laravel 如何在curl中为-d数据构建Guzzle GET请求,laravel,curl,laravel-5,guzzle,guzzle6,Laravel,Curl,Laravel 5,Guzzle,Guzzle6,我正在尝试使用Laravel5.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', [

我正在尝试使用Laravel5.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));
现在我可以将
statusCode
看作
200
getBody
看作
Null
。但是当我使用
curl
使用相同的请求时,我就能够看到完整的数据


有人能解决吗?

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

curl
手册页指出,并发送POST请求

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

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

$response = $client->request('POST', $uri, [
    'form_params' => [
        'api_key' => $key_value,
    ],
]);
第一个更改是正在发送的请求类型(GET=>POST)。第二个是
form_params
的用法。请求选项用于发送
应用程序/x-www-form-urlencoded
POST请求