Laravel 7 HTTP客户端-无法发送带有`body`的POST请求

wfauudbj  于 2023-08-08  发布在  其他
关注(0)|答案(3)|浏览(131)

使用Laravel 7.6和它内置的HTTP客户端。
我试图发送一个简单的POST请求与body在原始JSON格式到我的其他域,但没有运气:

$response = Http::post('https://example.com', [
    'body' => '{ test: 1 }'
]);

字符串
我得到400错误请求-客户端错误-因为我的服务器期望body作为强制性的。
我错过了什么?

kmbjn2e3

kmbjn2e31#

$response = Http:post('http://example.com/', [
   'foo' =>   'bar'
]);

字符串
或者这个

$response = Http::withHeaders([
 'User-Agent' => 'Some Agent',
])->asForm()->post('http://www.example.com/', [
  'foo' => 'bar',
]);

sf6xfgos

sf6xfgos2#

试试这个,在我的情况下,这应该工作。

$response = Http::withHeaders(['Content-Type' => 'application/json'])
    ->send('POST', 'https://example.com', [
        'body' => '{ test: 1 }'
    ])->json();

字符串

bgtovc5b

bgtovc5b3#

我也有同样的场景:我有一个JSON字符串,我想发送到一个端点。
为了完成这一点,我只是转换字符串使用:

$dataArray = json_decode(
    { "test": "1" },
    true
);

字符串
然后,我这样调用->post():

)->post(
    env('APP_URL') . '/api/webhook',
    $dataArray
);


这样,它只发送JSON字符串,而不添加任何根元素。

相关问题