laravel 客户端 api 与 guzzle

Posted

技术标签:

【中文标题】laravel 客户端 api 与 guzzle【英文标题】:laravel client api with guzzle 【发布时间】:2020-11-20 21:19:49 【问题描述】:

我正在使用来自 RapidAPI 面部验证https://rapidapi.com/HiBrainy/api/face-recognition4 的 API 和 我在使用 API 时遇到困难 此示例代码来自 RapidAPI 的 php

$client = new http\Client;
$request = new http\Client\Request;

$body = new http\Message\Body;
$body->addForm(array(
    'photo1' => array(
        'value' => 'image2.jpg',
        'data' => 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAQ=='
    ),
    'photo2' => array(
        'value' => 'image2.jpg',
        'data' => 'data:image/jpeg;base64,/9j/4AAQSkZ630QAMXaf//Z'
    )
), NULL);

$request->setRequestUrl('https://face-recognition4.p.rapidapi.com/FaceVerification');
$request->setRequestMethod('POST');
$request->setBody($body);

$request->setHeaders(array(
    'x-rapidapi-host' => 'face-recognition4.p.rapidapi.com',
    'x-rapidapi-key' => $my_api_key,
    'content-type' => 'multipart/form-data'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();

我用 guzzle 包申请了 laravel 我的代码

try 

...other code...

     $client = new Client();
     $response = $client->post('https://face-recognition4.p.rapidapi.com/FaceVerification', [
        'headers' => [
            'x-rapidapi-host' => 'face-recognition4.p.rapidapi.com',
            'x-rapidapi-key' => $my_api_key,
            'content-type' => 'multipart/form-data'
        ],
        'multipart' => [
            [
                'name' => 'photo1',
                'contents' => $image1,
                'filename' => 'image1.jpg'
            ],
            [
                'name' => 'photo2',
                'contents' => $image2,
                'filename' => 'image2.jpg'
            ]
        ]
    ]);
catch (\Exception $error)
    dd($error);

我有错误

#message: """
        客户端错误:`POST https://face-recognition4.p.rapidapi.com/FaceVerification` 导致 `400 Bad Request` 响应:
        "type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"出现一个或多个验证错误。","status":4 (截断.. .)

【问题讨论】:

【参考方案1】:

您应该考虑从您共享的代码中删除您的 API 密钥

尝试查看原始请求以获取更多详细信息并验证您的请求格式是否正确

【讨论】:

是的...... api 密钥不正确我添加了一些字符串

以上是关于laravel 客户端 api 与 guzzle的主要内容,如果未能解决你的问题,请参考以下文章

登录操作后在 Guzzle HTTP 客户端中设置 Authorization Bearer 标头 - Laravel

对 API 的请求在 Postman 中有效,但在我尝试使用 laravel/guzzle 时无效

使用 Guzzle 将数据和文件一起发布到 Laravel API

如何在不使用 curl 和 guzzle 的情况下从控制器 Laravel 调用 API,因为它不起作用 [关闭]

Laravel 5.6模拟Guzzle响应

如何使用 Laravel 5.2 + Guzzle 6 存储 JWT 并授予用户访问权限