我意识到目前至少有三个“官方”Dart库允许我执行HTTP请求。 更重要的是,其中三个库(dart:io(类HttpClient),包:http和dart:html)各有一个不同的,不兼容的API。

截至今天,package:html不提供此功能,但在其GitHub页面上,我发现它的目标是与dart:html实现100%的API兼容性,因此这些方法最终将被添加到那里。

哪个软件包提供了最具前瞻性和平台无关的API,可以在Dart中发出HTTP请求?

是包:http?

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

var url = "http://example.com";
http.get(url)
    .then((response) {
  print("Response status: ${response.statusCode}");
  print("Response body: ${response.body}");
});

是dart:html / package:html?

import 'dart:html';

HttpRequest.request('/example.json')
  .then((response) {
      print("Response status: ${response.status}");
      print("Response body: ${response.response}");
});

还是飞镖:io?

import 'dart:io';

var client = new HttpClient();
client.getUrl(Uri.parse("http://www.example.com/"))
    .then((HttpClientRequest request) {
      // Optionally set up headers...
      // Optionally write to the request object...
      // Then call close.
      ...
      return request.close();
    })
    .then((HttpClientResponse response) {
      print("Response status: ${response.statusCode}");
      print("Response body:");
      response.transform(UTF8.decoder).listen((contents) {
        print(contents);
      });
    });

假设我也想覆盖Android。 这也增加了包装:天空( https://github.com/domokit/sky_sdk/ )。 我承认这不是“官方”谷歌图书馆。

import 'package:sky/framework/net/fetch.dart';

Response response = await fetch('http://example.com');
print(response.bodyAsString());

什么是(将成为)常规产品是https://www.youtube.com/watch?v=t8xdEO8LyL8 我想知道他们的 HTTP请求故事是什么。 有些东西告诉我,到目前为止,它将是我们所见过的另一种不同的野兽。

===============>>#1 票数:4 已采纳

html包是一个HTML解析器,允许使用HTML服务器端。 我不希望它获得一些HttpRequest功能。

http包旨在为客户端和服务器Dart代码提供统一的API。 dart:html中的API只是浏览器提供的API的包装器。 dart:io的HttpRequest API是在没有浏览器限制的情况下构建的,因此与dart:html package:http提供统一的API,在浏览器中运行时委托给dart:html ,在服务器上运行时调用dart:io

我认为package:http是未来证明和跨平台的,应该非常适合您的要求。

  ask by user7610 translate from so

未解决问题?本站智能推荐:

1回复

是否可以将主体添加到使用dart:io:HttpClient类发出的HTTP POST请求中?

我目前正在尝试使用Dart编程语言通过摘要身份验证发出http POST请求。 唯一支持http摘要认证的Dart http类是dart:io:HttpClient类。 这是我目前的代码: 请求对象似乎没有用于正文的字段。 该文档也很糟糕,所以到目前为止我还找不到解决方案。
1回复

如何获取Dart中任何包的根路径

我有以下项目结构: myproject_common库的config文件夹中包含config.yaml文件。 我需要从myproject_server获取该文件的路径(URI对象)来解析它。 我看到的唯一方法是使用smth: 但看起来像是一个黑客和风险倾向。
1回复

在dart中创建一个包

如何在新的Dart编辑器中创建包? 没有“添加发布支持”复选框? 另外如何使用新编辑器创建“包”? 是否有一个用新编辑器描述过程的教程?
2回复

在哪里放Dart包资产

我正在写一个Dart包,我希望有一个Pub包含的资源目录。 我希望相对于包的根文件可以访问此目录。 有没有标准的方式与Pub这样做? 谢谢!
1回复

无法读取“ package:rikulo_commons / html.dart”(找不到资产rikulo_commons | lib / html.dart。)

按照以下指示操作后: https://github.com/rikulo/bootjack 当我尝试从Dart编辑器“生成js”时,收到错误消息:
2回复

飞镖和包根

我在命令行中使用dart VM运行一些代码。 命令是: 但是我得到一个错误: 我很困惑,因为在“ -package-root”参数引用的目录中,我肯定看到了“ start / start.dart”文件,因此该文件存在。 -package-root文件夹也正确。 我缺
2回复

飞镖包布局

我刚刚阅读了Dart建议的packagout布局规范,并提出了一些问题: 规范说我应该将所有第三方包放入lib目录。 但是运行pub get或pub upgrade会将这些包提取到packages目录中。 那是哪个?!? 我应该运行pub get ,将包下拉到packages ,
1回复

Dart的Polymer包为什么不包含builder.dart?

Dart关于Polymer的指南建议在根目录中创建一个build.dart文件。 第一行是对polymer / builder.dart的导入 导入'package:polymer / builder.dart'; 由于不存在polymer.builder.dart,因此构建
2回复

Dart Pub软件包安装错误?

Dart一直工作到更新了Editor,现在我对现有项目和新项目都遇到了错误。 我尝试完全重新安装Dart。 当我在Web-ui上为新项目运行pub install时收到以下消息: 没错,该目录中没有全新安装的“版本”文件。 我添加了该文件,并收到以下消息: 创建新项目时,我
2回复

使用json_serializable包生成dart文件

根据json_serializable软件包安装说明 ,您应该添加以下依赖项: 这是我的代码: 现在在Flutter中运行它: 或针对Dart项目: 我收到以下错误: 找不到软件包“ build_runner”。 您忘记添加依赖项了吗? 怎么了