0

我想将使用 post man 测试的 http post 请求转换为 symfony 操作:

有效载荷

我想将有效负载转换为 symfony 中的 json 数组以将数据发送到 url :

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\Routing\Annotation\Route;

    class PushNotificationController extends AbstractController
    {
        /**
         * @Route("/api/push_notification", name="push_notification")
         */
        public function index()
        {
            $httpClient = HttpClient::create();
            $response = $httpClient->request('POST', 'https://fcm.googleapis.com/fcm/send', [
                'headers' => [
                    // 'Accept' => 'application/json',
                    // "Content-Type" => "application/json; charset=UTF-8",
                    'Authorization' => 'Bearer token'
                ],
                'json' => [
                    'notification' => [
                        'title' => 'Portugal vs. Denmark',
                        'message' => 'My Notification Message',
                        'body' => '5 to 1',
                    ],
                    'token' => 'token'
                ],
            ]);
    
            $statusCode = $response->getStatusCode();
            // $statusCode = 200
            $contentType = $response->getHeaders()['content-type'][0];
            // $contentType = 'application/json'
            $content = $response->getContent();
            // $content = '{"id":521583, "name":"symfony-docs", ...}'
            $content = $response->toArray();
            // $content = ['id' => 521583, 'name' => 'symfony-docs', ...]
    
            return $content;
        }
    }

我收到了这个错误:

我认为这是关于 payload 的错误。请问有什么建议吗?

错误

4

1 回答 1

1

错误 400 无效的 Json 输入:

仅适用于 JSON 请求。表示请求无法解析为 JSON,或者它包含无效字段(例如,在需要数字的地方传递字符串)。响应中描述了确切的失败原因,并且应该在重试请求之前解决问题。

所以我想你需要查看你发送的 json。此外,您可以使用来自 Knp 或 git 的一些 FCM Bundle。

于 2020-07-21T14:51:57.017 回答