无法接收针对AWS SNS服务的任何已发布数据或订阅URL

我正在尝试利用snS服务使用http协议订阅主题。

以下是我在服务器上放置的一段php代码:-

<?php

require 'vendor/autoload.php';
require 'Aws/sns/Message.php';
require 'Aws/sns/MessageValidator.php';
require 'GuzzleHttp/Client.php';

use Aws\sns\Message;
use Aws\sns\MessageValidator;
use GuzzleHttp\Client;


// Make sure the request is POST
  if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
      file_put_contents("notification.txt","Error 405\n",FILE_APPEND);
      http_response_code(405);
      die;
  }

try {
    $message = Message::fromRawPostData();
    file_put_contents("notification.txt","\r\n-------\r\n",FILE_APPEND);
    file_put_contents("notification.txt",$_REQUEST,FILE_APPEND);
    $validator = new MessageValidator();
    $validator->validate($message);
} catch (Exception $e) {
    // Pretend we're not here if the message is invalid.
    file_put_contents("notification.txt",'snS Message Validation Error: ' . $e->getMessage() . "\n".$e->getTraceAsString()."\n",FILE_APPEND);
    echo($e);
    http_response_code(404);
    die();
}

/*
if ($message->get('Type') === 'Subscriptionconfirmation') {
    // Send a request to the SubscribeURL to complete subscription
    (new Client)->get($message->get('SubscribeURL'))->send();
    file_put_contents("notification.txt","Subscription\n",FILE_APPEND);
} elseif ($message->get('Type') === 'Notification') {
    ob_start();
    var_dump($message);
    $result = ob_get_clean();
    file_put_contents("notification.txt",$result,FILE_APPEND);
}
*/

当我尝试通过从AWS Portal调用“确认订阅”来接收呼叫时,但没有包含订阅URL的标头或正文。 谁能帮助我遵循正确的方向?

fszxg 回答:无法接收针对AWS SNS服务的任何已发布数据或订阅URL

感谢@Damir Kasipovic上面的评论。

中的代码更改
file_put_contents("notification.txt",$_REQUEST,FILE_APPEND); with 

对此

file_put_contents("notification.txt",file_get_contents('php://input'),FILE_APPEND)

帮我从通话中提取数据

{
"Type": "SubscriptionConfirmation","MessageId": "cc0fb4d8-***********-542a9f3dbb33","Token": "2336412f37fb687f5d51e6************4795716f01db42d3b1","TopicArn": "arn:aws:sns:**********Downloaded","Message": "You have chosen to subscribe to the topic arn:aws:sns:*****nTo confirm the subscription,visit the SubscribeURL included in this message.","SubscribeURL": "https://sns.us-east-1.amazonaws.com/*************1","Timestamp": "2019-11-25T12:55:40.335Z","SignatureVersion": "1","Signature": "L2uX+OF1f39np2******************h0lmw==","SigningCertURL": "https://sns.us-east-1.amazonaws.com/*******************.pem"

}

本文链接:https://www.f2er.com/3037726.html

大家都在问