我正在 Dart 中编写命令行脚本。访问(和 GET)HTTP 资源的最简单方法是什么?
问问题
1556 次
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 回答