You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中使用http库或HttpClient发起OPTIONS请求

Dart http 库发起 OPTIONS 请求的实现方案

dart 的 http 库没有封装 OPTIONS 类型请求的快捷调用方法,你可以通过通用 Request 类实现任意 HTTP 方法的请求,步骤如下:

基础 OPTIONS 请求实现

import 'package:http/http.dart' as http;

// 1. 构造 OPTIONS 请求对象
final request = http.Request('OPTIONS', url);
// 2. 添加请求头
request.headers.addAll(postHeaders);
// 若 OPTIONS 请求需要携带 body 可以加下面这行,常规 OPTIONS 请求不需要可省略
// request.body = postBody;

// 3. 发送请求并将流式响应转为普通 Response 对象,和你之前调用 post 获得的 response 结构完全一致
final streamedResponse = await request.send();
final response = await http.Response.fromStream(streamedResponse);

封装为快捷调用方法

你可以参考官方 post、get 方法的实现,封装自己的 options 调用,后续使用和原有快捷方法完全一致:

Future<http.Response> options(Uri url, {Map<String, String>? headers, Object? body}) async {
  final request = http.Request('OPTIONS', url);
  if (headers != null) {
    request.headers.addAll(headers);
  }
  if (body != null) {
    if (body is String) {
      request.body = body;
    } else if (body is List<int>) {
      request.bodyBytes = body;
    } else if (body is Map<String, String>) {
      request.bodyFields = body;
    }
  }
  final streamedResponse = await request.send();
  return http.Response.fromStream(streamedResponse);
}

// 调用方式和你原有的 post 请求完全一致
final response = await options(url, headers: postHeaders, body: postBody);

通用自定义 HTTP 方法请求说明

如果需要发起其他未封装的 HTTP 方法请求,只需替换 Request 构造的第一个参数字符串即可,比如 'PATCH'、'HEAD' 等,所有标准HTTP方法都支持。


内容的提问来源于stack exchange,提问作者Suragch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:36:04