【问题标题】:HTTP/2 400 returned for URL when using symfoy HTTP Client to make post request使用 symfony HTTP 客户端发出 post 请求时,URL 返回 HTTP/2 400
【发布时间】:2020-11-10 22:09:21
【问题描述】:

我想将使用 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 的错误。请问有什么建议吗?

【问题讨论】:

  • 我确定您的请求中有一个无效的 json,但是您可以使用 FCM 的捆绑包,而无需自己完成所有请求。

标签: symfony firebase-cloud-messaging payload symfony-http-client


【解决方案1】:

Error 400 无效的 Json 输入:

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

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

【讨论】:

  • 谢谢,我使用 symfony bundle 来处理发送通知
猜你喜欢
  • 2022-01-19
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多