项目背景:
A项目需要通过B项目向饿百发送请求,同步骑手状态信息,但是接口一直在报”参数错误“
还原下事故现场,A项目向B项目传参,需要传一个二维数组,但是二维数组在curl的时候报错,报错信息为:Array to String xxxxx,所以就把第二维的数组写成了json格式,如下:
$params = [
'orderId' => $this->orderId,
'source' => 1,
'type' => 1,
'state' => 21,
'distributor_id' => 201,
'knight' => json_encode([
'name' => $this->riderName,
'phone' => $this->riderPhone,
])
];
就这个格式传到了B项目,B项目调用饿百接口的时候,json_encode[body],所以传输格式变成了
cmd=order.selfDeliveryStateSync&source=xxx&secret=xxx&ticket=xxx&version=3&encrypt=×tamp=1604487398&access_token=1111&body={"distributor_id":201,"knight":"{\"id\":60765,\"name\":\"xxxx\",\"phone\":\"xxxxxxx\"}","order_id":"xxxx","state":21}&sign=A3BF9823125B0B87F7FCEEC4E4F8CCCF
可以清晰的看见 body里面的knight 转义了一次,所以这种格式传过去,对方解析不出来(饿百好像是java语言)