我使用Laravel 9和内置方法Http::withHeaders ($headers)->post($url, $data).
在$data变量中,我通过"&"传递由http_build_request产生的字符串。分隔符。但是Laravel试图用它来创建一个数组并发送数据。
API服务返回一个错误。请告诉我如何强制Laravel传递一个字符串(!),而不是一个数组?
我代码:
$array = [
'key1' => 'value1',
'key2' => 'value2',
// etc...
];
$headers = [
'Content-Type' => 'application/x-www-form-urlencoded',
'HMAC' => $hmac
];
$data = http_build_query($array, '', '&');
$response = Http::withHeaders($headers)->post($api_url, $data);
return json_decode($response->getBody()));
如果你将它作为x-www-form-urlencoded i gues发送,你应该能够在请求正文中传递数据。
$response = Http::withHeaders($headers)
->withBody($data)
->asForm()
->post($api_url);
然而,我不确定这是否会工作
你试过了吗,asForm
$response = Http::withHeaders($headers)->asForm()->post($api_url, $data);
如果你想使用application/x-www-form-urlencoded内容类型发送数据,你应该在发出请求之前调用asForm方法。