dart:io
库中HttpServer
类的用法介绍如下。
使用 HTTP 协议交付内容(例如网页)的服务器。
注意:HttpServer 提供低级 HTTP 函数。我们建议用户评估 Write HTTP servers on dart.dev 中讨论的高级 API。
HttpServer
是提供HttpRequest 对象的Stream。每个HttpRequest
都有一个关联的HttpResponse 对象。服务器通过写入该HttpResponse 对象来响应请求。以下示例显示如何将 HttpServer
绑定到端口 80(HTTP 服务器的标准端口)上的 IPv6 InternetAddress 以及如何侦听请求。端口 80 是默认的 HTTP 端口。但是,在大多数系统上访问它需要super-user 权限。对于本地测试,请考虑使用非保留端口(1024 及以上)。
import 'dart:io';
void main() async {
var server = await HttpServer.bind(InternetAddress.anyIPv6, 80);
await server.forEach((HttpRequest request) {
request.response.write('Hello, world!');
request.response.close();
});
}
不完整的请求(其中缺少全部或部分标头)将被忽略,并且不会为它们生成异常或 HttpRequest 对象。同样,当写入 HttpResponse 时,任何 Socket 异常都将被忽略,并且任何未来的写入都将被忽略。
HttpRequest 公开请求标头并提供请求主体(如果存在)作为数据流。如果正文未读,则在服务器写入HttpResponse 或关闭它时将其耗尽。
使用安全的 HTTPS 连接绑定
使用 bindSecure 创建 HTTPS 服务器。
服务器向客户端提供证书。证书链和私钥在传递给 bindSecure 的 SecurityContext 对象中设置。
import 'dart:io';
void main() async {
var chain =
Platform.script.resolve('certificates/server_chain.pem').toFilePath();
var key = Platform.script.resolve('certificates/server_key.pem').toFilePath();
var context = SecurityContext()
..useCertificateChain(chain)
..usePrivateKey(key, password: 'dartdart');
var server =
await HttpServer.bindSecure(InternetAddress.anyIPv6, 443, context);
await server.forEach((HttpRequest request) {
request.response.write('Hello, world!');
request.response.close();
});
}
证书和 key 是 PEM 文件,可以使用 OpenSSL 中的工具创建和管理。
- 实现的类型
相关用法
- Dart HttpServer.defaultResponseHeaders用法及代码示例
- Dart HttpRequest.postFormData用法及代码示例
- Dart HttpOverrides用法及代码示例
- Dart HttpClient.findProxy用法及代码示例
- Dart HttpClientRequest用法及代码示例
- Dart HttpClient用法及代码示例
- Dart HttpRequest.request用法及代码示例
- Dart HttpClient.findProxyFromEnvironment用法及代码示例
- Dart HttpClientResponse用法及代码示例
- Dart HttpDate.parse用法及代码示例
- Dart HttpClient.connectionFactory用法及代码示例
- Dart HttpRequest用法及代码示例
- Dart HttpClientRequest.followRedirects用法及代码示例
- Dart HttpHeaders用法及代码示例
- Dart HttpClient.keyLog用法及代码示例
- Dart HttpRequest.getString用法及代码示例
- Dart HttpRequest构造函数用法及代码示例
- Dart HttpClientRequest.abort用法及代码示例
- Dart HttpResponse用法及代码示例
- Dart HtmlCollection.last用法及代码示例
- Dart HtmlEscape用法及代码示例
- Dart HtmlEscapeMode用法及代码示例
- Dart HtmlCollection.elementAt用法及代码示例
- Dart HtmlCollection.length用法及代码示例
- Dart HtmlDocument.registerElement2用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 HttpServer class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。