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.
如果没有提供 charset,将使用默认的 ISO-8859-1(拉丁 1)。
HttpResponse response = ...
response.headers.add(HttpHeaders.contentTypeHeader, "text/plain");
response.write(...); // Strings written will be ISO-8859-1 encoded.
如果设置了不支持的 content-type,将抛出异常。
- 实现类型
属性
- bufferOutput ↔ bool
- 获取或设置 HttpResponse 是否应该缓冲输出。getter/setter 对
- connectionInfo → HttpConnectionInfo?
- 获取客户端连接的信息。如果套接字不可用,则返回
null
。无 setter - contentLength ↔ int
- 获取和设置响应的内容长度。如果事先不知道响应的大小,将内容长度设置为 -1,这也是未设置时的默认值。getter/setter 对
- 设置在客户端(在 'set-cookie' 头部)中设置的 Cookie。无 setter
- deadline ↔ Duration?
- 设置和获取响应的 deadline。从设置的时间开始计时。设置新的 deadline 将覆盖任何以前的 deadline。当超出 deadline 时,响应将被关闭,并且任何进一步的数据都将被忽略。getter/setter 对
- done → Future
- 当消费者关闭或发生错误时完成的未来。无setter继承
- 编码 ↔ 编码
- 写入字符串时使用的编码。getter/setter 对继承
- hashCode → int
- 此对象的哈希码。无setter继承
- headers → HttpHeaders
- 返回响应头。无 setter
- persistentConnection ↔ bool
- 获取和设置持久连接状态。此属性的初始值是从请求中获取的持久连接状态。getter/setter 对
- reasonPhrase ↔ String
- 响应的理由短语。getter/setter 对
- runtimeType → Type
- 对象的运行时类型的表示。无setter继承
- statusCode ↔ int
- 响应的状态码。getter/setter 对
方法
-
add(
List< ) → voidint> data - 将字节
data
添加到目标消费者,忽略 编码。继承 -
addError(
Object error, [StackTrace? stackTrace]) → void - 将错误作为错误事件传递给目标消费者。继承
-
addStream(
Stream< ) → FutureList< streamint> > - 添加给定
stream
的所有元素。继承 -
close(
) → Future - 关闭目标消费者。继承
-
detachSocket(
{bool writeHeaders = true}) → Future< Socket> - 从HTTP服务器断开底层套接字。当套接字被断开时,HTTP服务器将不再对其执行任何操作。
-
flush(
) → Future - 返回一个Future,一旦所有缓冲数据被底层StreamConsumer接受,该Future将完成。继承
-
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时被调用。继承
-
redirect(
Uri location, {int status = HttpStatus.movedTemporarily}) → Future - 以重定向到
location
响应。 -
toString(
) → String - 此对象的字符串表示形式。继承
-
write(
Object? object) → void - 通过调用Object.toString将
object
转换为String,并通过add将结果的编码添加到目标消费者。继承 -
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 - 相等操作符。继承