當使用 Guzzle 發布具有多個值的欄位時,括號會附加到欄位名稱:
<?php
$client = new \GuzzleHttp\Client([
'base_uri' => 'https://www.example.com/test',
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
],
);
$client->request('POST', '', [
'form_params' => [
'foo' => [
'hello',
'world',
],
],
]);
Guzzle 將此資料作為foo[0]=hello&foo[1]=world. 有沒有辦法省略括號,以便將資料發送為foo=hello&foo=world?例如,如果包含括號,Google 表單會回傳 400 錯誤回應。
uj5u.com熱心網友回復:
目前無法通過使用自動編碼來實作這一點post_params,因此如果您需要這種確切的格式,則必須提供自己的原始 POST 正文。
幸運的是,有一個非常有用的函式GuzzleHttp\Psr7\Query(如果你需要通過 composer 大量使用,它應該會自動安裝),named build,它完全符合你的需要。
use GuzzleHttp\Psr7\Query;
$client = new \GuzzleHttp\Client([
'base_uri' => 'https://www.example.com/test',
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
]
]);
$client->request('POST', '', [
'body' => Query::build([
'foo' => [
'hello',
'world',
],
]),
]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/312536.html
上一篇:為什么在使用ReactuseState時會在onsubmit事件上清除有效負載資料?這是對服務器端的POST請求
