本文介绍了Microsoft图无法读取JSON请求有效负载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用php中的Microsoft graph创建订阅,但是目前无法看到问题所在.

I'm trying to create subscriptions with microsoft graph in php, however I am unable to see what is going wrong at this point.

代码在以下位置中断:

protected $http_subscribe = "https://graph.microsoft.com/v1.0/subscriptions";

public function getSubscriptions()
{
    if(empty($this->token)) {
        dd('no token supplied'); //some debugging
    }

    $date = $this->endTimeDate->format('Y-m-d'); //This is Carbon date

    $time = $this->endTimeDate->format('H:i:s.u');

    $response = $this->client->request('POST', $this->http_subscribe, [
        'headers' => [
            'Authorization' => 'Bearer ' . $this->token,
            'Content-Type' => "application/json"
        ], 'form_params' => [
            "changeType" => "created,updated",
            "notificationUrl" => "https://website.test/notify",
            "resource" => "me/mailFolders('Inbox')/messages",
            "expirationDateTime" => $date.'T'.$time,
            "clientState" => "secretClientValue"
        ]
    ]);

    dd($response);
}

我得到的全部错误是:

"""
{\r\n
  "error": {\r\n
    "code": "BadRequest",\r\n
    "message": "Unable to read JSON request payload. Please ensure Content-Type header is set and payload is of valid JSON format.",\r\n
    "innerError": {\r\n
      "request-id": "063d9947-80fd-461d-a70e-q0bd8eee9d56",\r\n
      "date": "2018-08-07T08:20:54"\r\n
   }\r\n
  }\r\n
}
"""

现在我明白了错误的意思,我的json无效,但是此数组采用正确的json格式,我将Guzzle用作客户端.

Now I get what the error says, my json would be invalid, however this array is in correct json format, I'm using Guzzle as my Client.

推荐答案

您应使用 json 选项.试试这个:

You should use json option. Try this:

$response = $this->client->request('POST', $this->http_subscribe, [
   'headers' => [
       'Authorization' => 'Bearer ' . $this->token,
   ],
   'json' => [
       "changeType" => "created,updated",
       "notificationUrl" => "https://website.test/notify",
       "resource" => "me/mailFolders('Inbox')/messages",
       "expirationDateTime" => $date.'T'.$time,
       "clientState" => "secretClientValue",
   ],
]);

这篇关于Microsoft图无法读取JSON请求有效负载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-28 07:26
查看更多