【发布时间】:2020-12-03 03:42:08
【问题描述】:
我在PHP 7.3.8 上运行guzzlehttp/guzzle 版本6.5.5. 并尝试发出发布请求。
必填字段之一是blog。
所以当我这样做时:
$comment = [
'foo' => 'bar'
];
$data = $comment + ["blog" => $this->blogUrl];
dump($data);
$options = [
'form_params' => [
$data,
],
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
]
];
$response = $this->client->post($url, $options);
我收到“博客”字段丢失的错误。
上述转储的结果是:
array:2 [
"foo" => "bar"
"blog" => "http://jigal.dev"
]
但是当我这样做时(注意我将“博客”移动到 form_params 键中):
$comment = [
'foo' => 'bar'
];
$data = $comment;
dump($data);
$options = [
'form_params' => [
'blog' => $this->blogUrl,
$data,
],
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
]
];
$response = $this->client->post($url, $options);
错误消失了。
使用array_merge($comment, ["blog" => this->blogUrl] 代替$data = $comment + ["blog" => $this->blogUrl]; 并没有什么不同。
有什么建议吗?
【问题讨论】:
-
您的第一个示例相当于:
form_params' => [['foo' => 'bar', 'blog' => ...]]。注意双方括号。编辑:哦,好吧,你想通了。