关于php:调用API时解析body出错

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
                    ],
                ]);

在邮递员中,我的要求如下

request

request

有人注意到实际的错误吗?所以请给我一个方法来做到这一点。
谢谢。

相关讨论
  • 你在 $img 里面放了什么?
  • @krylov123 图像对象
  • 检查我更新的答案

根据 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
        ]
    ]
]);
相关讨论
  • 感谢您回答我,但我仍然遇到同样的错误。这是我的文件路径和文件名 "/home/madusanka/OX/ocr/storage/app/public/uploaded_images/3??/selections/1.png", "1.png"
  • 当从标题部分中删除 Content-Type 键时,它可以工作。我可以从 [stackoverflow.com/questions/47550801/... 找到原因。谢谢您的回答。

以上是关于php:调用API时解析body出错的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>