从命令行Dart获取HTTP响应的最简单方法是什么?

时间:2013-03-31 20:16:25

标签: dart

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

2 个答案:

答案 0 :(得分:8)

使用http package轻松命令行访问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));

最佳做法是从使用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

答案 1 :(得分: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