如何在命令行中使用Dart获取HTTP响应的最简单方法?

6
我正在使用Dart编写一个命令行脚本。最简单的访问(和获取)HTTP资源的方法是什么?
2个回答

8
使用http package可以轻松地在命令行中访问HTTP资源。虽然核心dart:io库具有HTTP客户端的基本操作(请参见HttpClient),但是http package可以更方便地进行GET、POST等操作。
首先,在您的pubspec依赖项中添加http:
name: sample_app
description: My sample app.
dependencies:
  http: any

安装该包。可以通过命令行或Dart编辑器运行:

pub install

导入包:

// inside your app
import 'package:http/http.dart' as http;

发起GET请求。 get() 函数返回一个 Future 对象。

http.get('http://example.com/hugs').then((response) => print(response.body));

在使用get()函数的方法中,最佳实践是返回Future:

Future getAndParse(String uri) {
  return http.get('http://example.com/hugs')
      .then((response) => JSON.parse(response.body));
}

很不幸,我找不到任何官方文档。因此,我不得不查看代码(其中有很好的注释):https://code.google.com/p/dart/source/browse/trunk/dart/pkg/http/lib/http.dart


0

这是我找到的最短的代码

curl -sL -w "%{http_code} %{url_effective}\\n" "URL" -o /dev/null

这里,-s 静默 curl 的进度输出,-L 跟随所有重定向,-w 使用自定义格式打印报告,-o 重定向 curl 的 HTML 输出到 /dev/null。

以下是其他特殊变量,如果您想要更多地自定义输出:

  • url_effective
  • http_code
  • http_connect
  • time_total
  • time_namelookup
  • time_connect
  • time_pretransfer
  • time_redirect
  • time_starttransfer
  • size_download
  • size_upload
  • size_header
  • size_request
  • speed_download
  • speed_upload
  • content_type
  • num_connects
  • num_redirects
  • ftp_entry_path

1
谢谢!但问题是如何从Dart应用程序中获取HTTP资源。虽然这也很好知道。 - Seth Ladd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接