Guzzle 到莱弗 api

Guzzle to ryver api

大家好,我一直在为这个问题抓狂。我正在从 ryver 访问 api 以发送 post 聊天消息以获取自动通知。我正在关注此文档 https://support.ryver.com/chatmessage-api/ 并且我正在使用 laravel 5.1 和 Guzzle 如果它有帮助,这是我的代码

$client = new Client();
        $postData = \GuzzleHttp\json_encode(['JSON Payload' => ['body' => 'test123']]);



        $options = [
            'json' => $postData
        ];

        $request = $client->post('https://somecompany.ryver.com/api/1/odata.svc/workrooms(1099207)/Chat.PostMessage()', $options);
        $request->setHeader('Content-Type', 'application/json');
        $request->setHeader('Accept', 'application/json');
        $request->setHeader('Authorization', 'Basic Base64codehere');

        $response = $request->send();

总是returns [状态代码] 400,请帮忙:( 谢谢,祝你有美好的一天!

您可以尝试使用此参数发送 API 请求

$postData = \GuzzleHttp\json_encode(['body' => 'test123']);

$options = [
    'JSON Payload' => $postData
];

已修复 :) 我只需要将 JSON 字符串化以使其工作并将正文设置为 JSON。这是代码。

$client = new Client();
        $postData = '{
        "body":"**Update!**\n> ** Test success for ryver integration.",
          "extras": {
            "from": {
              "__descriptor":"Developer",
              "avatarUrl":"https://cdn2.f-cdn.com/ppic/4973381/logo/4389970/developer_avatar.png"
            } 
          }
        }';
        $request = $client->post('https://company.ryver.com/api/1/odata.svc/workrooms(1098712)/Chat.PostMessage()',[
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
            'Authorization' => 'Basic base64'
        ]);

        $request->setBody($postData);

        $response = $request->send();