使用 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?
对 API 的请求在 Postman 中有效,但在我尝试使用 laravel/guzzle 时无效