请教各位一个问题。
最近在调试一个第三方的api,然后使用了guzzle做客户端,其中该api的一个请求参数需要使用本地图片的二进制数据,我翻了下guzzle的手册,然后查找了下文档http://guzzle-cn.readthedocs....,按照这上面的试了下,服务端一直提示说我的的请求解析出错,要我检查下content-type and body,试了很久也没解决,希望有熟悉的大神提点下,谢谢了。代码如下
$client = new Client();
$instance = sign::getInstance();
$url = 'http://XXXXX';
$sign = $instance->getSign();
//hearder头
$header = ['Host'=>'XXXXXXX','Content-Type'=>'multipart/form-data','Authorization'=>$sign];
//本地图片
$file = file_get_contents('D:\wamp64\www\whistles-master\test.jpg');
//body
$body = [
[
'name'=>'appid',
'contents'=>'XXXX'
],
[
'name'=>'bucket',
'contents'=>'XXXXX'
],
[
'name'=>'type',
'contents'=> 0
],
[
'name'=>'image',
'contents'=>fopen('D:\wamp64\www\whistles-master\test.jpg', 'r')
]
];
$res = $client->request('POST',$url, ['headers'=>$header,'multipart'=>$body]);
echo $res->getBody();
报错信息如下
GuzzleHttp\Exception\ClientException: Client error: `POST http://XXXXX` resulted in a `400 Bad Request` response: {"code":3,"message":"invalid request: parsing error - check content-type and body","data":{}} in D:\XXXXXXXXX\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php on line 113
我最近刚好也在用腾讯的人脸识别,也遇到这个问题,测试过程中,代码好像跟你的没有区别, 少了Host, 少了
Content-Type
的设置,guzzle自己应该条件了,然后测试没问题,能够正常的返回.