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 文件必须与使用它的应用程序位于同一位置。

其他资源

继承
注释
  • @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>
HttpRequestEventTargetprogress 事件流处理的流。
无设置器继承
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<String, String> data, {bool? withCredentials, String? responseType, Map<String, String>? requestHeaders, void onProgress(ProgressEvent e)?}) Future<HttpRequest>
使用指定数据编码为表单数据向服务器发送POST请求。
request(String url, {String? method, bool? withCredentials, String? responseType, String? mimeType, Map<String, String>? requestHeaders, dynamic sendData, void onProgress(ProgressEvent e)?}) Future<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