

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

# 在 Amazon SQS 中使用 AWS 查询协议发出查询 API 请求
<a name="sqs-making-api-requests-xml"></a>

本主题介绍了如何构造 Amazon SQS 端点、发出 GET 和 POST 请求以及解释响应。

## 构造端点
<a name="sqs-api-constructing-endpoints"></a>

为了使用 Amazon SQS 队列，您必须构造一个端点。有关 Amazon SQS 端点的信息，请参阅 *Amazon Web Services 一般参考*中的以下页面：
+ [区域端点](https://docs.aws.amazon.com/general/latest/gr/rande.html#sqs_region)
+ [Amazon Simple Queue Service 端点和配额](https://docs.aws.amazon.com/general/latest/gr/sqs-service)

每个 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
```

**注意**  
队列名称和队 URLs 列区分大小写。  
*`AUTHPARAMS`* 的结构取决于 API 请求的签名。有关更多信息，请参阅*亚马逊 Web Services 一般参考*中的[签署 AWS API 请求](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)。

## 提出 GET 请求
<a name="structure-get-request"></a>

Amazon SQS GET 请求的结构是一个 URL，其中包含以下部分：
+ **端点** – 作为请求操作对象的资源（[队列名称和 URL](sqs-queue-message-identifiers.md#queue-name-url)），例如：`https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue`
+ **操作** – 要对端点执行的[操作](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Operations.html)。端点与操作之间用问号 (`?`) 分隔，例如：`?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
```

**注意**  
队列名称和队 URLs 列区分大小写。  
由于 GET 请求是 URLs，因此必须对所有参数值进行 URL 编码。由于不允许使用空格 URLs，因此每个空格都以 URL 编码为。`%20`示例的其余部分没有进行 URL 编码，以方便您阅读。

## 发出 POST 请求
<a name="structure-post-request"></a>

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](https://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2)` 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 请求添加其他项目。