# HTTP 请求和响应参考

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

## 响应 属性

`response`  对象包含关于接收到的 HTTP Response 的信息（响应内容、标头、状态等），并提供对嵌套对象 [标头](#headers-reference) 和 [contentType](#content-type-reference) 的访问。

|  属性  |  描述  |
| --- | --- |
|   `正文` （字符串 \| [TextStreamResponse](#textstreamresponse_reference) \| DOM 文档 \| 对象）  |  响应内容，可以是字符串、TextStreamResponse 对象、DOM  `文档`  或 JSON 对象。  |
|   `headers` （ [响应头](#headers-reference)）  |  [响应头存储对象](#headers-reference)。  |
|   `状态` （int）  |  响应状态，例如，  200  或  404 。  |
|   `contentType` （ [内容类型](#content-type-reference)）  |  [contentType 对象](#content-type-reference)，此对象保存关于  内容类型 响应头值的数据。  |

## 标头 对象

`ResponseHeaders`  对象用于检索有关响应头值的数据。

### 方法

|  方法  |  参数  |  描述  |
| --- | --- | --- |
|  valueOf  |      `headerName` （字符串）     |     获取  `headerName`  响应头的第一个值，或  `null` （如果  `headerName`  响应头不存在）。     |
|  valuesOf  |      `headerName` （字符串）     |     检索包含所有  `headerName`  响应头值的数组。 如果  `headerName` 响应头不存在，则返回一个空数组。     |

## ContentType 对象

`ContentType`  数据对象包含来自  Content-Type  响应头的信息。

### Properties

|  属性  |  描述  |
| --- | --- |
|   `mimeType` （字符串）  |  响应的 MIME 类型，例如  text/plain 、  text/xml 、  application/json 。  |
|   `字符集` （字符串）  |  响应字符集的字符串表示，例如，  utf-8 。  |

## TextStreamResponse 对象

`TextStreamResponse`  接口用于将响应处理为文本流。 它允许您实现两个方法：

* `onEachLine(subscriber, onFinish)` ，它循环遍历流中的每一行。

* `onEachMessage(subscriber, onFinish)` ，订阅服务器发送的每条消息。 这可以用于 WebSocket、GRPC 和 WebSocket 上的 GraphQL。

### 参数

|  参数  |  用法在 onEachLine 中  |  每次消息中的用法  |
| --- | --- | --- |
|   `订阅者`   |     处理流线的函数。 它需要两个参数：        * `line` ：作为流的一部分接收到的字符串或 JSON 对象。    * `取消订阅` ：终止当前 `onEachLine` 块执行的函数。 可用于在满足某个条件时停止流处理。    |     处理流消息的函数。 它接受三个参数：        * `消息` ：作为流的一部分接收到的字符串或 JSON 对象。    * `取消订阅` ：终止当前 `onEachMessage` 块执行的函数。 可用于在满足某个条件时停止流处理。    * `输出` （可选）：一个接受字符串（消息）并将其参数返回给服务器的函数。    |
|   `onFinish`   |  流结束后执行的函数。  |

要了解如何使用它，请参考 [响应处理示例](http-response-handling-examples.html)或点击   示例   在一个  `.http`  文件中并选择   WebSocket 请求   或   GraphQL 请求  。

## Cookie

HTTP 客户端提供了一些方法，用于处理 HTTP 响应的  `Set-Cookie`  页眉中返回的 Cookie：

|  方法  |  参数  |  描述  |
| --- | --- | --- |
|   `response.cookies()`   |  -  |  返回服务器设置的所有 Cookie 的数组。  |
|   `response.cookiesByName(name)`   |   `名称` （字符串）  |  返回按指定名称筛选的 Cookie 数组。  |

可以使用这些方法从响应中提取特定 Cookie，并在后续请求中重用其值，例如通过 [将 Cookie 存储为变量](http-response-handling-examples.html#cookie-in-a-variable)。 还可以验证服务器在登录或注销等操作后是否设置了预期的 Cookie，检查 Cookie 特性以用于调试，或断言某些 Cookie 是否作为自动化测试流程的一部分存在。

## 请求属性

`请求`  对象包含有关 HTTP 请求的信息，可用于预请求脚本和响应处理脚本中。

|  属性  |  在预请求脚本中使用时  |  响应处理脚本中使用时  |
| --- | --- | --- |
|   `body()`   |     通过以下两种方法之一获取请求 [body](exploring-http-syntax.html#provide-request-body)：        * `getRaw()` ：以原始格式返回请求正文：如果正文包含变量，则显示它们的名称而不是它们的值。 例如： ```JAVASCRIPT client.log(request.body.getRaw()); ```    * `tryGetSubstituted()` ：返回请求体，其中所有已知变量都被替换为它们的值。 ```JAVASCRIPT client.log(request.body.tryGetSubstituted()); ```    |     请求 [body](exploring-http-syntax.html#provide-request-body)作为字符串。 例如：       ```JAVASCRIPT client.log(request.body()) ```    |
|   `环境`   |  具有  `get(name)`  方法，该方法可检索 [环境变量](http-client-variables.html#environment-variables)的值，环境变量由  `名称`  标识，如果不存在，则返回  `null` 。  |
|   `headers`   |     有两种方法：        * `all` ：返回包含当前请求所有头部值的数组。    * `findByName(name)` ：检索由 `名称` 参数标识的头部的值。    |
|     数组的每个元素都是一个请求页眉，具有以下方法：        * `名称` ：标题名称，例如 `Content-Type` 。    * `getRawValue` ：返回原始格式的头部值：如果头部包含变量，将显示它们的名称而不是它们的值。    * `tryGetSubstitutedValue()` ：返回包含所有已知变量替换成其值的头部。    |     数组的每个元素都是一个请求页眉，具有以下方法：        * `名称` ：标题名称，例如 `Content-Type` 。    * `value()` ：标题值，例如 `application/json` 。    |
|   `方法`   |  请求中使用的 HTTP 方法（如 GET 或 POST）。 例如：  `client.log(request.method)`   |
|   `url()`   |     获取请求 URL 的两种方法之一：        * `getRaw()` ：返回原始格式的请求 URL：如果 URL 包含变量，则显示变量名称而不是其值。 例如： ```JAVASCRIPT client.log(request.url.getRaw()); ```    * `tryGetSubstituted()` ：返回用所有已知变量及其值替换后的请求 URL。 ```JAVASCRIPT client.log(request.url.tryGetSubstituted()); ```    |     请求 URL 的字符串。 例如：       ```JAVASCRIPT client.log(request.url())  ```    |
|   `变量`   |  具有  `get(name)`  方法，该方法可检索由  `名称`  标识的 [每个请求变量](http-client-variables.html#per_request_variables)的值，如果不存在，则返回  `null` 。  |
|   `iteration()`   |     [获取当前迭代的编号（索引）](http-client-variables.html#iteration-example)       用于表示集合的变量。     |
|   `templateValue(Integer)`   |  [在循环中通过索引获取集合元素的值。](http-client-variables.html#templatevalue-example)  |

