gpt4 book ai didi

amazon-web-services - 使用 C# 将 json 消息发布到 AWS SNS 主题

转载 作者:行者123 更新时间:2023-12-05 07:35:33 34 4
gpt4 key购买 nike

我正在尝试使用 AWS SDK 从我的 C# 应用程序向 AWS SNS 主题发布 Json 消息。其[在此处输入图像描述][1]未填充字符串格式的消息和消息属性字段。

代码示例如下:

        var snsClient = new AmazonSimpleNotificationServiceClient(accessId, secretrkey, RegionEndpoint.USEast1);
PublishRequest publishReq = new PublishRequest()
{
TargetArn = topicARN,
MessageStructure = "json",
Message = JsonConvert.SerializeObject(message)
};
var msgAttributes = new Dictionary<string, MessageAttributeValue>();
var msgAttribute = new MessageAttributeValue();
msgAttribute.DataType = "String";
msgAttribute.StringValue = "123";
msgAttributes.Add("Objectcd", msgAttribute);
publishReq.MessageAttributes = msgAttributes;
PublishResponse response = snsClient.Publish(publishReq);

最佳答案

较老的问题,但在处理类似问题时遇到了我的回答

当您将 MessageStructure 设置为“json”时。
json 必须至少包含一个“默认”的顶级 JSON 键,其值是一个字符串。
所以 json 需要看起来像
{“默认”:“我的消息”
我的解决方案看起来像

   var messageDict = new Dictionary<string,object>()
messageDict["default"] = "my message";
PublishRequest publishReq = new PublishRequest()
{
TargetArn = topicARN,
MessageStructure = "json",
Message = JsonConvert.SerializeObject(messageDict)
};
// if json is an object
// then
messageDict["default"] = JsonConvert.SerializeObject(myMessageObject);

我在 v3 上使用 PublishAsync

来自文档 https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SNS/TPublishRequest.html

消息结构
获取和设置属性 MessageStructure。

如果您想为每个协议(protocol)发送不同的消息,请将 MessageStructure 设置为 json。例如,使用一个发布操作,您可以向您的 SMS 订阅者发送一条短消息,并向您的电子邮件订阅者发送一条较长的消息。如果将 MessageStructure 设置为 json,则 Message 参数的值必须:

是语法上有效的 JSON 对象;和

至少包含一个值为字符串的“默认”顶级 JSON 键。

您可以定义其他顶级键来定义您要发送到特定传输协议(protocol)(例如“http”)的消息。

有效值:json

关于amazon-web-services - 使用 C# 将 json 消息发布到 AWS SNS 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49512992/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com