将消息添加到天蓝色存储队列而不使用base64编码?

2024-05-12

我无法将我的请求编码为 base64,并且根据文档我不应该这样做,但我无法弄清楚。

如果我 Base64 编码它工作正常:

<QueueMessage>
<MessageText>PHNhbXBsZT5zYW1wbGUgbWVzc2FnZTwvc2FtcGxlPg==</MessageText>
</QueueMessage>

将解码后的消息添加到队列中:

<sample>sample message</sample>

根据文档(https://msdn.microsoft.com/sv-se/library/azure/dd179346.aspx https://msdn.microsoft.com/sv-se/library/azure/dd179346.aspx)

消息的格式必须可以包含在 XML 请求中 使用 UTF-8 编码。要在消息中包含标记,内容 消息必须是 XML 转义或 Base64 编码。任何 XML 消息中未转义或编码的标记将被删除 在将消息添加到队列之前。

尝试添加(而不是 PHNhbXBsZT5zYW1wbGUgbWVzc2FnZTwvc2FtcGxlPg==):

&lt;sample&gt;sample message&lt;/sample&gt;

成功,但当尝试查看队列中的消息时,它仅响应:

输入不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符或非法字符 填充字符之间。

有人知道如何将正确的原始 xml 转义请求消息发送到存储队列吗?

完整请求(没有密钥和名称):

POST https://xxxxxxx.queue.core.windows.net/testqueue/messages?sv=2015-04-05&ss=q&srt=sco&sp=a&se=2026-11-11T20:24:03Z&st=2016-11-11T12:24:03Z&spr=https&sig=xxxxxxxxxxxxxxxxx%3D HTTP/1.1
User-Agent: Fiddler
Host: XXXXX.queue.core.windows.net
Content-Type: text/plain
Content-Length: 64

<QueueMessage>
<MessageText>&lt;sample&gt;sample message&lt;/sample&gt;</MessageText>
</QueueMessage>

我在调用 AsString 属性时遇到格式错误,因为默认情况下从存储队列返回的消息是采用 base64 编码的。

CloudQueue 对象有一个设置为 true 的 EncodeMessage 属性。将其切换为 false,一切正常。这是我的代码:

 CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
 CloudQueue queue = queueClient.GetQueueReference(ClientQueueName);
 queue.EncodeMessage = false;
 CloudQueueMessage retrievedMessage = queue.GetMessage();

ClientQueueName 是一个字符串,保存我在 Azure 上的队列的名称。我认为在发送之前,您的情况也需要将该属性设置为 false。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将消息添加到天蓝色存储队列而不使用base64编码? 的相关文章

随机推荐