如何在 Symfony 中使用 Guzzle 客户端发送参数?

How to send parameters using Guzzle client in Symfony?

我正在尝试使用 phpunit 和 guzzle 进行一些应用程序测试。问题是当我设置请求并 post 它时,它几乎丢失了所有数据。

我的请求是这样的:

$client->request(
                'POST',
                'catalogue/item/save',
                [
                    'json' => ['itemData' => [
                        'basic'=>[
                            'code'=>1
                        ]
                    ]],
                    'headers' => [
                        'X-AUTH-API-TOKEN'=>'Bearer '.$tokens->token,
                        'itemData'=>["asd"]
                        ],
                    'itemData' => ["asd"],
                    'request' => [
                        'itemData' => [
                            'basic'=>[
                                'code'=>1
                            ]
                        ]
            ]
                ]
            );

我知道它看起来很混乱,但我尝试了各种方法来传递 itemData 数组。

这就是我尝试从请求

中获取itemData的方法
$itemData = $request->request->get('itemData');

但它始终是 null,因为 $request->request 是空的。

如果我尝试 $request->getContents() 它有 'json' 数组,但我无法更改方法,因为我只是在测试它。

有谁知道导致 $request->request 为空的问题是什么?

您没有发送任何参数。

request 不是 request option

您正在寻找 form_params,很有可能。

此外,请考虑 form_paramsjson 不兼容。您要么发送一个,要么发送另一个。由于您已经在发送 json,因此您必须将其从请求中删除。

$client->request(
    'POST',
    'catalogue/item/save',
    [

        'headers'     => [
            'X-AUTH-API-TOKEN' => 'Bearer ' . $tokens->token,
            'itemData'         => ["asd"],
        ],
        'form_params' => [
            'itemData' => [
                'basic' => [
                    'code' => 1,
                ],
            ],
        ],
    ]
);