使用 Guzzle 在 post 请求中传递数组

Posted

技术标签:

【中文标题】使用 Guzzle 在 post 请求中传递数组【英文标题】:Pass array in post request using Guzzle 【发布时间】:2017-12-11 16:53:14 【问题描述】:

我正在尝试在发布请求有效负载中传递数组。

url = http://IP:PortNo/index.php/v1/login

有效载荷:

data= "terminal_id": "terminal_id", "api_login": "api_login", "api_key": "api_key", "merchant_code": "merchant_code" 

我所做的是:

$data = ['terminal_id' => $this->terminal_id , 'api_login' => $this->api_login,
        'api_key' => $this->api_key , 'merchant_code' => $this->merchant_code];
$response = $this->client->post($url, array('data' => $data));

但我得到的回应是:

“未找到请求数据”

这意味着我的数据负载格式不正确。有什么想法吗?

【问题讨论】:

您是否尝试过使用 json_encode 将 $data 编码为 json?我过去曾做过类似[ 'data' => json_encode($data) ] 之类的事情,为了发送正确的正文。 是的,我滴滴 j$response = $this->client->post( $url, ['data' => json_encode($data) ] ); 但我得到了相同的结果 Request data not found 可能是$this->client->post($url [ 'body' => json_encode([ 'data' => $data ]) ]); 的形式?也许看看这个:***.com/questions/22244738/… 【参考方案1】:
$response = $this->client->post($url, ['json' => $data]);

请参阅 Guzzle6 手册中标题为 json 的部分:http://docs.guzzlephp.org/en/stable/request-options.html#json

【讨论】:

以上是关于使用 Guzzle 在 post 请求中传递数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Curl将这个mailchimp API请求转换为使用PHP的Guzzle?

Guzzle 使用嵌套数组发布多部分请求

Guzzle 请求:发布正文数据

对 API 的请求在 Postman 中有效,但在我尝试使用 laravel/guzzle 时无效

你可以在 Guzzle POST Body 中包含原始 JSON 吗?

PHP 使用 Guzzle 执行 HTTP 请求