在 laravel 中使用 GuzzleHttp 发送原始空 json

Posted

技术标签:

【中文标题】在 laravel 中使用 GuzzleHttp 发送原始空 json【英文标题】:send raw empty json with GuzzleHttp in laravel 【发布时间】:2020-01-05 18:56:48 【问题描述】:

我的解决方案很简单,但老实说花了将近 5 个小时,仍然没有找到我的答案。 我需要使用Post 发送请求并检索我的数据。 使用 POSTMAN 就可以了。

这里是我的代码

use GuzzleHttp\Client;

 $client =new Client();

     $client->post($url,[
            'form_params' => [
              ''
            ]
        ]);

使用POSTMAN,我不需要设置Header,我只需要发送

得到这个错误:

Client error: `POST http://URL` resulted in a `400 
Bad Request` response: "error":"Failed when parsing body as json"

那么,我现在该怎么做呢?

【问题讨论】:

【参考方案1】:

我认为你可以做到

$client->post($url,[
    'parameter_one' => $value1,
    'param_two' => $value2,
]);

不确定如何传递对象,如果你愿意的话,我认为你可以传递带有数据作为第二个参数或对象数组的 php 对象..

【讨论】:

首先感谢您的回答。是的,我可以像你说的那样发送参数,但在这个特定的 api 中,我只需要发送 而不需要其他任何东西。【参考方案2】:

您似乎想在没有 application/x-www-form-urlencoded 的情况下发送 POST 数据,这是使用“form_params”自动添加的内容

如果你想这样做,你应该做一些更类似于以下的事情:

use GuzzleHttp\Client;
$client = new Client();
$response = $client->post($url, [
    'body' => ''
]);

【讨论】:

烦人!也许它根本不需要 application/json!你可以试试$response = $client->post($url, [ 'body' => '' ]); 吗? 太棒了!我会更新我的答案以适合你:)

以上是关于在 laravel 中使用 GuzzleHttp 发送原始空 json的主要内容,如果未能解决你的问题,请参考以下文章

为啥 GuzzleHttp 客户端在 Laravel/Lumen 上使用它发出网络请求时会抛出 ClientException?

Laravel + GuzzleHTTP 没有响应数据?

GuzzleHttp Laravel - 无法解析主机:myapplication.dev

laravel 类 'GuzzleHttp\Client' 未找到

Laravel 8/Passport/GuzzleHttp APO 返回 200 OK 但没有正文响应

laravel/lumen-installer 安装失败:guzzlehttp/guzzle 锁定在 6.3.0