There was an error parsing the body when calling an API
我正在开发一个 OCR 项目,我正在尝试使用 vidado API。当我通过 posman 发送发布请求时,它给了我正确的响应,但是当我从 php 调用 API 时,它给了我以下错误
1 | Client error: `POST https://api.vidado.ai/read/text` resulted in a `400 Bad Request` response: {"detail":"There was an error parsing the body"} |
我的代码是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $client = new \\GuzzleHttp\\Client(); $url ="https://api.vidado.ai/read/text"; $requestAPI = $client->post( $url, [ 'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'my apikey', 'Content-Type' => 'multipart/form-data' ], 'form_params' => [ 'autoscale' => 'true', 'image'=> $img ], ]); |
在邮递员中,我的要求如下
有人注意到实际的错误吗?所以请给我一个方法来做到这一点。
谢谢。
根据 Guzzle 文档
Note
multipart cannot be used with the form_params option. You will need to
use one or the other. Use form_params for
application/x-www-form-urlencoded requests, and multipart for
multipart/form-data requests.This option cannot be used with body, form_params, or json
因此您不能将 form_params 与 multipart/form-data 一起使用,您必须以这种方式使用 multipart 方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $client = new \\GuzzleHttp\\Client(); $url ="https://api.vidado.ai/read/text"; $requestAPI = $client->request('POST', $url, [ 'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'my apikey', 'Content-Type' => 'multipart/form-data' ], 'multipart' => [ [ 'name' => 'image', 'contents' => fopen('/path/to/file', 'r'), 'filename' => 'custom_filename.jpg' ], [ 'name' => 'autoscale', 'contents'=> true ] ] ]); |