使用 Amazon 查询协议发出查询 API 请求 - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon 查询协议发出查询 API 请求

在本节中,您将了解如何构造 Amazon SQS 端点,发出 GET 和 POST 请求以及解释响应。

构造端点

为了使用 Amazon SQS 队列,您必须构造一个端点。有关 Amazon SQS 端点的信息,请参阅 Amazon Web Services 一般参考中的以下页面:

每个 Amazon SQS 端点都是独立的。例如,如果有两个名为 MyQueue 的队列,其中一个队列具有端点 sqs.us-east-2.amazonaws.com,另一个队列具有端点 sqs.eu-west-2.amazonaws.com,则这两个队列不会相互共享任何数据。

以下是一个提出创建队列请求的端点的示例。

https://sqs.eu-west-2.amazonaws.com/ ?Action=CreateQueue &DefaultVisibilityTimeout=40 &QueueName=MyQueue &Version=2012-11-05 &AUTHPARAMS
注意

队列名称和队列 URL 区分大小写。

AUTHPARAMS 的结构取决于 API 请求的签名。有关更多信息,请参阅 Amazon Web Services 一般参考中的签署 Amazon API 请求

提出 GET 请求

Amazon SQS GET 请求的结构是一个 URL,其中包含以下部分:

  • 端点 – 作为请求操作对象的资源(队列名称和 URL),例如:https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue

  • 操作 – 要对端点执行的操作。端点与操作之间用问号 (?) 分隔,例如:?Action=SendMessage&MessageBody=Your%20Message%20Text

  • 参数 - 任何请求参数。各参数以和号 (&) 分隔,例如:&Version=2012-11-05&AUTHPARAMS

以下是一个 GET 请求的示例,该请求向 Amazon SQS 队列发送一条消息。

https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue ?Action=SendMessage&MessageBody=Your%20message%20text &Version=2012-11-05 &AUTHPARAMS
注意

队列名称和队列 URL 区分大小写。

因为 GET 请求是 URL,因此您必须对所有参数值进行 URL 编码。由于 URL 中不允许使用空格,因此每个空格将在 URL 中编码为“%20”。示例的其余部分没有进行 URL 编码,以方便您阅读。

提出 POST 请求

Amazon SQS POST 请求在 HTTP 请求的正文中以表单的形式发送查询参数。

下面是一个将 Content-Type 设置为 application/x-www-form-urlencoded 的 HTTP 标头的示例。

POST /123456789012/MyQueue HTTP/1.1 Host: sqs.us-east-2.amazonaws.com Content-Type: application/x-www-form-urlencoded

该标头后跟一个 form-urlencoded GET 请求,该请求向 Amazon SQS 队列发送一条消息。各参数以和号 (&) 分隔。

Action=SendMessage &MessageBody=Your+Message+Text &Expires=2020-10-15T12%3A00%3A00Z &Version=2012-11-05 &AUTHPARAMS
注意

Content-Type HTTP 标头是必需的。AUTHPARAMS 对于 GET 请求是相同的。

根据客户端的 HTTP 版本,您的 HTTP 客户端可能会向 HTTP 请求添加其他项。