将 curl 转换为 Dart
使用 http 包将 curl 命令转换为 Dart 代码。curl2code 通过 WebAssembly 完全在您的浏览器中运行——您的数据保持私密。对于 Kotlin,请尝试我们的 curl 转 Kotlin 转换器。对于 Swift,请参阅 curl 转 Swift。下方是适用于 Flutter 的即插即用 Dart 示例。
如何从浏览器复制 curl
- 1
打开开发者工具
按 F12 或 Ctrl+Shift+I 打开浏览器开发者工具。
- 2
进入 Network 标签页
点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。
- 3
复制为 cURL
右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。
常见问题解答
什么是 Dart http 包?
http 包是 Dart 和 Flutter 推荐的 HTTP 客户端。它为 GET、POST、多部分上传和流式传输提供了一个简单的、基于 Future 的 API。通过 dart pub add http 安装。它适用于所有 Dart 平台——移动端、Web 端和服务器端。curl2code 将其作为 Dart 转换的默认选择。
http 对比 dio 对比 HttpClient —— 我该使用哪一个?
http 简单且轻量——非常适合基础请求。dio 增加了拦截器、FormData、下载进度和取消功能。HttpClient (dart:io) 是更底层的内置工具,但代码较冗长。对于需要拦截器的 Flutter 应用,选择 dio。有关类似的移动端客户端,请参阅 curl 转 Kotlin 或 curl 转 Swift。
如何在 Dart 中处理身份验证?
将请求头传递给请求:http.get(url, headers: { "Authorization": "Bearer $token" })。对于 Basic 认证,使用 base64Encode(utf8.encode("$user:$pass")) 进行编码。curl2code 将 -u 和 -H 'Authorization' 标志转换为带有正确类型请求头的 Dart 代码。
如何在 Dart 中发送多部分表单数据?
使用 http.MultipartRequest:创建请求,使用 request.fields['key'] = 'value' 添加字段,使用 request.files.add(await http.MultipartFile.fromPath('file', path)) 添加文件。然后使用 request.send() 发送。curl2code 将 -F 标志转换为此模式。
如何在 Dart 中处理 HTTP 错误?
http 包不会在 HTTP 错误时抛出异常——需手动检查 response.statusCode。将调用包装在 try/catch 中以捕获 SocketException(网络错误)和 TimeoutException。在长期运行的应用中,使用 http.Client 配合 close() 以正确清理资源。
如何在 Dart HTTP 中使用 async/await?
所有 Dart HTTP 方法都返回 Future —— 使用 final response = await http.get(Uri.parse(url))。Dart 的 async/await 是内置在语言中的。对于并行请求,使用 Future.wait([request1, request2])。有关类似的异步模式,请参阅 curl 转 TypeScript 或 curl 转 Swift。
如何在 Dart 中设置超时?
在任何 Future 上使用 .timeout() 方法:http.get(url).timeout(Duration(seconds: 30))。超过时间后会抛出 TimeoutException。如需更多控制,创建一个 http.Client 并通过来自 dart:io 的底层 HttpClient 配置 connectionTimeout。
如何在 Dart 中使用代理?
使用来自 dart:io 的 HttpClient:HttpClient()..findProxy = (uri) => 'PROXY proxy:8080'。对于 http 包,创建一个包装了已配置 IOClient 的自定义 HttpClient。Dart 也会遵循 HTTP_PROXY 和 NO_PROXY 环境变量。
如何在 Dart 中发送带有 JSON 正文的 POST 请求?
使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 命令转换为 Dart。生成的代码使用 http.post(uri, body: jsonEncode(data), headers: {'Content-Type': 'application/json'})。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 http 代码中设置相应的 Content-Type 请求头。
如何在 Dart 中添加 Bearer 令牌授权?
将 curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 http 代码:headers: {'Authorization': 'Bearer YOUR_TOKEN'}。curl2code 会从 -H "Authorization: Bearer ..." 和 --oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass。
如何在 Dart 中设置 Content-Type 请求头?
curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 http 代码:headers: {'Content-Type': 'application/json'}。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 http API。