【问题标题】:Guzzle 6 array_merge not working by form params?Guzzle 6 array_merge 不能通过表单参数工作?
【发布时间】: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' => ...]]。注意双方括号。编辑:哦,好吧,你想通了。

标签: php guzzle6 guzzle


【解决方案1】:

此代码正在运行:

$data = ["blog" => $this->blogUrl] + $comment;
'form_params' => $data

而不是 form_params => [ $data ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2019-04-06
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多