HTTP 响应,用于将服务器返回的头部和数据发送到客户端,以响应 HTTP 请求。
每个 HttpRequest 对象都通过 response
属性提供对其相关 HttpResponse 对象的访问。服务器通过写入 HttpResponse 对象将响应发送到客户端。
写入响应
此类实现了 IOSink。设置头部后,可以使用源自 IOSink 的方法(如 writeln()
)来写入 HTTP 响应的主体。使用 close()
方法关闭响应并发送到客户端。
server.listen((HttpRequest request) {
request.response.write('Hello, world!');
request.response.close();
});
首次使用 IOSink 方法时,会发送请求头部。在发送后调用任何更改头部的方 法会抛出异常。
设置头部
HttpResponse 对象包含一些用于设置响应 HTTP 头部的属性。当通过 IOSink 写入字符串数据时,使用的编码由 "Content-Type" 头部的 "charset" 参数确定。
HttpResponse response = ...
response.headers.contentType
= ContentType("application", "json", charset: "utf-8");
response.write(...); // Strings written will be UTF-8 encoded.
如果没有提供字符集,将使用默认值 ISO-8859-1(拉丁 1)。
HttpResponse response = ...
response.headers.add(HttpHeaders.contentTypeHeader, "text/plain");
response.write(...); // Strings written will be ISO-8859-1 encoded.
如果设置了不支持的 contentType,将抛出异常。
- 实现类型
构造函数
属性
- bufferOutput ↔ bool
- 获取或设置是否应对 HttpResponse 缓冲输出。getter/setter 对
- connectionInfo → HttpConnectionInfo?
- 获取客户端连接信息。如果套接字不可用,则返回
null
。没有设置器 - contentLength ↔ int
- 获取和设置响应的内容长度。如果无法预先知道响应的大小,请将内容长度设置为 -1,如果未设置,则为默认值。getter/setter 对
- 设置要在客户端(在 'set-cookie' 头部)中设置的 Cookie。没有设置器
- deadline ↔ Duration?
- 设置和获取响应的 deadline。从设置的时间开始计时。设置新的 deadline 将覆盖任何以前的 deadline。当 deadline 被超过时,响应将被关闭,并将忽略任何后续数据。getter/setter 对
- done → Future
- 当消费者关闭或发生错误时将要完成的 Future。没有设置器继承
- encoding ↔ Encoding
- 写入字符串时使用的 Encoding。getter/setter 对继承
- hashCode → int
- 此对象的哈希码。没有设置器继承
- headers → HttpHeaders
- 返回响应头。没有设置器
- persistentConnection ↔ bool
- 获取并设置持久连接状态。该属性的初始值是请求的持久连接状态。getter/setter 对
- reasonPhrase ↔ String
- 响应的原因短语。getter/setter 对
- runtimeType → Type
- 对象运行时类型的表示。没有设置器继承
- statusCode ↔ int
- 响应的状态码。getter/setter 对
方法
-
add(
List< ) → voidint> data - 将字节数据
data
添加到目标消费者,忽略 编码。继承 -
addError(
Object error, [StackTrace? stackTrace]) → void - 将错误传递为目标消费者的错误事件。继承
-
addStream(
Stream< List< stream) → Futureint> > - 添加给定
stream
的所有元素。继承 -
close(
) → Future - 关闭目标消费者。继承
-
detachSocket(
{bool writeHeaders = true}) → Future< Socket> - 从 HTTP 服务器中分离底层套接字。当套接字分离后,HTTP 服务器将不再对其执行任何操作。
-
flush(
) → Future - 返回一个 Future,当底层 StreamConsumer 接受所有缓冲数据时完成。继承
-
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时调用。继承
-
redirect(
Uri location, {int status = HttpStatus.movedTemporarily}) → Future - 响应重定向到
location
。 -
toString(
) → String - 此对象的字符串表示形式。继承
-
write(
Object? object) → void - 通过调用 Object.toString 将
object
转换为 String,并将结果编码添加到目标消费者。继承 -
writeAll(
Iterable objects, [String separator = ""]) → void - 遍历提供的
objects
并按顺序写入。继承 -
writeCharCode(
int charCode) → void - 写入
charCode
的字符。继承 -
writeln(
[Object? object = ""]) → void - 通过调用 Object.toString 将
object
转换为 String,并将结果写入到this
后跟一个换行符。继承
运算符
-
operator ==(
Object other) → bool - 等号运算符。继承