6

我正在 Dart 中编写命令行脚本。访问(和 GET)HTTP 资源的最简单方法是什么?

4

2 回答 2

8

使用http 包可以轻松地通过命令行访问 HTTP 资源。虽然核心dart:io库具有 HTTP 客户端的原语(请参阅HttpClient),但 http 包使 GET、POST 等更容易。

首先,将 http 添加到您的 pubspec 的依赖项中:

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));

从使用的函数返回 Future 是最佳实践get()

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

于 2013-03-31T20:16:24.617 回答
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_header
  • size_request
  • speed_download
  • speed_upload
  • 内容类型
  • 连接数
  • 重定向次数
  • ftp_entry_path
于 2013-03-31T20:26:44.900 回答