http 0.12.0+2

  • Readme
  • Changelog
  • Example
  • Installing
  • 91

一个可组合的,基于Future的库,用于发出HTTP请求.

pub package Build Status

该程序包包含一组高级函数和类,可轻松使用HTTP资源. 它与平台无关,可以在命令行和浏览器上使用.

Using #

使用此库的最简单方法是通过顶层函数. 它们允许您以最小的麻烦来发出单个HTTP请求:

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

var url = 'http://example.com/whatsit/create';
var response = await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');

print(await http.read('http://example.com/foobar.txt'));

如果要向同一服务器发出多个请求,则可以通过使用客户端而不是一次性发出请求来保持打开持久连接. 如果这样做,请确保完成后关闭客户端:

var client = new http.Client();
try {
  var uriResponse = await client.post('http://example.com/whatsit/create',
      body: {'name': 'doodle', 'color': 'blue'});
  print(await client.get(uriResponse.bodyFields['uri']));
} finally {
  client.close();
}

您还可以通过自己创建RequestStreamedRequest对象并将它们传递给Client.send来对请求和响应进行更细粒度的控制.

此程序包设计为可组合的. 这样一来,外部库就可以轻松地相互配合以为其添加行为. 希望添加行为的库应创建BaseClient的子类,该子类包装另一个Client并添加所需的行为:

class UserAgentClient extends http.BaseClient {
  final String userAgent;
  final http.Client _inner;

  UserAgentClient(this.userAgent, this._inner);

  Future<StreamedResponse> send(BaseRequest request) {
    request.headers['user-agent'] = userAgent;
    return _inner.send(request);
  }
}

0.12.0+2 #

  • 文档修复.

0.12.0 #

New Features #

  • 常规Client工厂构造函数现在可在dart:iodart:html可用的任何地方使用,并将分别为您提供IoClientBrowserClient .
  • package:http/http.dart导入现在可以在网络上(或dart:iodart:html可用的任何地方)安全使用.

Breaking Changes #

  • 为了直接使用或引用IoClient ,您将需要导入新的package:http/io_client.dart import. 通常只有在将自定义HttpClient实例传递给构造函数时才需HttpClient ,在这种情况下,您已经放弃了对Web的支持.

0.11.3+17 #

  • 使用新的Dart 2常数名称. 该分支仅用于允许现有代码在Dart 2下继续运行.

0.11.3+16 #

  • 根据stack_trace软件包停止.

0.11.3+15 #

  • 声明对async 2.0.0的支持.

0.11.3+14 #

  • 从边界字符中删除单引号("'"-ASCII 39). 导致Google Cloud Storage问题.

0.11.3+13 #

  • 删除package:http_parser无法解析的边界字符.

0.11.3+12 #

  • 不要引用MultipartRequest的边界标头. 这与服务器怪癖更加兼容.

0.11.3+11 #

  • 修复了SDK约束,使其仅包括支持在任何地方导入dart:io SDK版本.

0.11.3+10 #

  • 停止使用dart:mirrors .

0.11.3+9 #

  • 在多部分块中删除多余的换行符.

0.11.3+8 #

  • 为多部分块正确指定Content-Transfer-Encoding .

0.11.3+7 #

  • 声明与http_parser 3.0.0的兼容性.

0.11.3+6 #

  • 修复了http/testing.dart另一种强模式警告.

0.11.3+5 #

  • 修复了一些持久的强模式警告.

0.11.3+4 #

  • 修复所有强模式警告.

0.11.3+3 #

  • Support http_parser 2.0.0.

0.11.3+2 #

  • 要求Dart SDK> = 1.9.0

  • stack_trace包中消除Chain.track许多用法.

0.11.3+1 #

  • Support http_parser 1.0.0.

0.11.3 #

  • 添加Client.patch快捷方式方法和匹配的顶级patch方法.

0.11.2 #

  • 添加一个BrowserClient.withCredentials属性.

0.11.1+3 #

  • 正确命名空间内部库名称.

0.11.1+2 #

  • 扩大对unittest的版本限制.

0.11.1+1 #

  • stack_trace的版本约束.

0.11.1 #

  • 公开包装dart:io HttpClientIOClient类.

0.11.0+1 #

  • 修复了在处理BrowserClient解码XMLHttpRequest响应时处理错误的错误.

0.11.0 #

  • 该软件包不再取决于dart:io . package:http/browser_client.dartBrowserClient类现在可用于在浏览器上发出请求.

  • MultipartFile.contentTypedart:ioContentType类型更改为http_parserMediaType类型.

  • 现在,异常的类型为ClientException而不是dart:ioHttpException .

0.10.0 #

  • 使BaseRequest.contentLengthBaseResponse.contentLength使用null表示未知的内容长度,而不是-1.

  • 现在,已命名new BaseResponsecontentLength参数,而不是位置参数.

  • 使请求标头不区分大小写.

  • 使MultipartRequest更紧密地遵守浏览器的编码约定.

example/main.dart

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

main(List<String> arguments) async {
  // This example uses the Google Books API to search for books about http.
  // https://developers.google.com/books/docs/overview
  var url = "https://www.googleapis.com/books/v1/volumes?q={http}";

  // Await the http get response, then decode the json-formatted responce.
  var response = await http.get(url);
  if (response.statusCode == 200) {
    var jsonResponse = convert.jsonDecode(response.body);
    var itemCount = jsonResponse['totalItems'];
    print("Number of books about http: $itemCount.");
  } else {
    print("Request failed with status: ${response.statusCode}.");
  }
}

Use this package as a library

1. Depend on it

将此添加到包的pubspec.yaml文件中:


dependencies:
  http: ^0.12.0+2

2. Install it

您可以从命令行安装软件包:

与酒吧:


$ pub get

使用Flutter:


$ flutter pub get

另外,您的编辑器可能支持pub getflutter pub get . 查看您的编辑器文档以了解更多信息.

3. Import it

现在,在Dart代码中,您可以使用:


import 'package:http/http.dart';
  
Popularity:
描述该程序包相对于其他程序包的受欢迎程度. [更多]
100
Health:
从静态分析得出的代码运行状况. [更多]
69
Maintenance:
反映出软件包的整洁和最新状态. [更多]
100
Overall:
以上的加权分数. [更多]
91
了解有关得分的更多信息.

我们在2019年12月10日分析了此软件包,并在下面提供了分数,详细信息和建议. using: 分析已完成,状态使用以下命令 :

  • 飞镖:2.7.0
  • 最高:0.13.1 + 4

Health suggestions

修复lib/src/browser_client.dart . (-4.41点)

lib/src/browser_client.dart报告了9条提示,包括:

第32行第17行:不必要的新关键字.

第46行第15行:不必要的新关键字.

第53行第21行:不必要的新关键字.

第57行第41行:不必要的新关键字.

第58行第20行:不必要的新关键字.

修复lib/src/request.dart . (-4.41点)

lib/src/request.dart报告了9条提示,包括:

第24行第11行:不必要的新关键字.

第88行第22行:不必要的新关键字.

line 112 col 13: Unnecessary new keyword.

第122行第22行:不必要的新关键字.

第124行第13栏:不必要的新关键字.

修复lib/src/utils.dart . (-3.93分)

lib/src/utils.dart报告了8条提示,包括:

第56行第9行:不必要的新关键字.

第61行第28行:不必要的新关键字.

第74行第12行:不必要的新关键字.

第76行第10行:不必要的新关键字.

第83行第10行:不必要的新关键字.

修复具有分析或格式问题的其他13个文件. (-23.79点)

以下文件中的其他问题:

  • lib/src/base_request.dart (7条提示)
  • lib/src/multipart_request.dart (7条提示)
  • lib/src/multipart_file.dart (6条提示)
  • lib/src/byte_stream.dart (5条提示)
  • lib/src/io_client.dart (4条提示)
  • lib/src/mock_client.dart (4条提示)
  • lib/src/base_client.dart (3条提示)
  • lib/src/multipart_file_io.dart (3条提示)
  • lib/src/response.dart (3条提示)
  • lib/src/base_response.dart (2条提示)
  • lib/src/streamed_request.dart (2条提示)
  • lib/http.dart (1条提示)
  • lib/src/boundary_characters.dart (1条提示)

Dependencies

Package Constraint Resolved Available
直接依赖
Dart SDK > = 2.0.0-dev.61.0 <3.0.0
async > = 1.10.0 <3.0.0 2.4.0
http_parser > = 0.0.1 <4.0.0 3.1.3
path > = 0.9.0 <2.0.0 1.6.4
pedantic ^1.0.0 1.9.0
传递依存关系
charcode 1.1.2
collection 1.14.12
meta 1.1.8
source_span 1.5.5
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
开发依赖
test ^1.3.0

by  ICOPY.SITE