HttpRequest 类
客户端 XHR 请求用于从 URL 获取数据,正式名称为 XMLHttpRequest。
注意:您应避免直接使用 HttpRequest
来执行 HTTP 请求。您可以通过 BrowserClient
适配器间接使用 HttpRequest
,该适配器位于 package:http
。
使用高级库,例如 package:http
,允许您通过最小更改代码即可更换实现。例如,package:http
中的 Client
包含了浏览器和 Android 及 iOS 上使用的平台原生 HTTP 客户端的实现。
HttpRequest 可用于从 HTTP 和 FTP 协议获取数据,对于 AJAX 风格的页面更新很有用。
获取文本文件内容的最简单方法,例如 JSON 格式的文件,是使用 getString。例如,以下代码获取 JSON 文件的内容并打印其长度
var path = 'myData.json';
HttpRequest.getString(path).then((String fileContents) {
print(fileContents.length);
}).catchError((error) {
print(error.toString());
});
从其他服务器获取数据
出于安全原因,浏览器对嵌入式应用的请求施加了限制。使用该类的默认行为,执行请求的代码必须从与请求的资源相同源(域名、端口和应用程序层协议)提供。在上面的例子中,myData.json 文件必须与使用它的应用程序位于同一位置。
其他资源
- 动态获取数据 教程展示了如何从静态文件或服务器加载数据。
- Dart 关于使用 HttpRequest 的文章
- JS XMLHttpRequest
- 使用 XMLHttpRequest
- 继承
-
- Object
- EventTarget
- HttpRequestEventTarget
- HttpRequest
- 注释
-
- @Native("XMLHttpRequest")
构造函数
- HttpRequest()
- 任何类型请求(GET、POST 等)的通用构造函数。factory
属性
- hashCode → int
- 此对象的哈希码。无设置器继承
- on → Events
- 这是对事件流的易用性访问器,应在没有明确访问器的情况下使用。无设置器继承
-
onAbort → Stream<
ProgressEvent> - 此 HttpRequestEventTarget 处理的
abort
事件流。无设置器继承 -
onError → Stream<
ProgressEvent> - 此 HttpRequestEventTarget 处理的
error
事件流。无设置器继承 -
onLoad → Stream<
ProgressEvent> - 此 HttpRequestEventTarget 处理的
load
事件流。无设置器继承 -
onLoadEnd → Stream<
ProgressEvent> - 此 HttpRequestEventTarget 处理的
loadend
事件流。无设置器继承 -
onLoadStart → Stream<
ProgressEvent> - 此 HttpRequestEventTarget 处理的
loadstart
事件流。无设置器继承 -
onProgress → Stream<
ProgressEvent> - 此 HttpRequestEventTarget 由
progress
事件流处理的流。无设置器继承 -
onReadyStateChange → Stream<
Event> - 每当 HttpRequest 对象的
readyState
值改变时,都要通知的事件监听器。没有设置器 -
onTimeout → Stream<
ProgressEvent> - 此 HttpRequestEventTarget 处理的
timeout
事件流。无设置器继承 - readyState → int
- 指示请求的当前状态没有设置器
- response → dynamic
- 请求返回的数据。没有设置器
-
responseHeaders → Map<
String, String> - 以键值对形式返回所有响应头。没有设置器
- responseText → String?
- 以字符串形式返回的响应或失败时的空字符串。没有设置器
- responseType ↔ String
-
告诉服务器所需响应格式的字符串。getter/setter 对
- responseUrl → String?
-
没有设置器
- responseXml → Document?
- 请求响应或失败时的 null。没有设置器
- runtimeType → Type
- 表示对象运行时类型的表示。无设置器继承
- status → int?
- 请求的 HTTP 结果代码(如200、404等)。另请参阅: HTTP 状态代码没有设置器
- statusText → String?
- 请求响应字符串(例如“OK”)。另请参阅: HTTP 状态代码没有设置器
- timeout ↔ int?
- 在请求自动终止之前等待的时间(毫秒)。getter/setter 对
- upload → HttpRequestUpload
-
可以保存监听器以跟踪请求进度的 EventTarget。没有设置器
- withCredentials ↔ bool?
- 如果跨站请求应使用凭据(如cookie或授权头),则为 true;否则为 false。getter/setter 对
方法
-
abort(
) → void - 停止当前请求。
-
addEventListener(
String type, EventListener? listener, [bool? useCapture]) → void -
继承的
-
dispatchEvent(
Event event) → bool -
继承的
-
getAllResponseHeaders(
) → String - 获取请求的所有响应头。
-
getResponseHeader(
String name) → String? - 返回名为
header
的响应头,如果没有找到则返回 null。 -
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时被调用。继承的
-
open(
String method, String url, {bool? async, String? user, String? password}) → void - 指定所需的
url
和请求时使用的method
。 -
overrideMimeType(
String mime) → void - 指定想要用于响应的特定 MIME 类型(如
text/xml
)。 -
removeEventListener(
String type, EventListener? listener, [bool? useCapture]) → void -
继承的
-
send(
dynamic body_OR_data> → void - 发送请求,并带有任何给定的
data
。 -
setRequestHeader(
String name, String value) → void - 设置 HTTP 请求头值。
-
toString(
) → String - 此对象字符串表示形式。继承的
运算符
-
operator ==(
Object other) → bool - 等于运算符。继承的
静态属性
- supportsCrossOrigin → bool
- 检查当前平台是否支持跨域请求。没有设置器
- supportsLoadEndEvent → bool
- 检查当前平台是否支持 LoadEnd 事件。没有设置器
- supportsOverrideMimeType → bool
- 检查当前平台是否支持 overrideMimeType 方法。没有设置器
- supportsProgressEvent → bool
- 检查当前平台是否支持 Progress 事件。没有设置器
静态方法
-
getString(
String url, {bool? withCredentials, void onProgress(ProgressEvent e)?}) → Future< String> - 为指定的
url
创建 GET 请求。 -
postFormData(
String url, Map< void onProgress(ProgressEvent e)?}) → Future<String, String> data, {bool? withCredentials, String? responseType, Map<String, String> ? requestHeaders,HttpRequest> - 使用指定数据编码为表单数据向服务器发送POST请求。
-
request(
String url, {String? method, bool? withCredentials, String? responseType, String? mimeType, Map< dynamic sendData, void onProgress(ProgressEvent e)?}) → Future<String, String> ? requestHeaders,HttpRequest> - 创建并向指定的
url
发送URL请求。 -
requestCrossOrigin(
String url, {String? method, String? sendData}) → Future< String> - 向指定的URL发送跨域请求。
常量
- DONE → const int
- HEADERS_RECEIVED → const int
- LOADING → 常量 int
- OPENED → 常量 int
-
readyStateChangeEvent → 常量 EventStreamProvider<
Event> - 静态工厂方法,用于将
readystatechange
事件暴露给不一定为HttpRequest实例的事件处理器。 - UNSENT → 常量 int