为了从众多的网络服务中获取数据,你需要提供相应的授权认证信息。当然了,解决这一问题的方法有很多,而最常见的方法或许就是使用 Authorization HTTP header 了。

添加 Authorization Headers

http 这个 package 提供了相当实用的方法来向请求中添加 headers,你也可以使用 dart:io 来使用一些常见的 HttpHeaders

  1. Future<http.Response> fetchPost() {
  2. return http.get(
  3. 'https://jsonplaceholder.typicode.com/posts/1',
  4. // Send authorization headers to the backend
  5. headers: {HttpHeaders.authorizationHeader: "Basic your_api_token_here"},
  6. );
  7. }

完整示例

下面的例子是基于 获取网络数据 中的方法编写的。

  1. import 'dart:async';
  2. import 'dart:convert';
  3. import 'dart:io';
  4. import 'package:http/http.dart' as http;
  5. Future<Post> fetchPost() async {
  6. final response = await http.get(
  7. 'https://jsonplaceholder.typicode.com/posts/1',
  8. headers: {HttpHeaders.authorizationHeader: "Basic your_api_token_here"},
  9. );
  10. final responseJson = json.decode(response.body);
  11. return Post.fromJson(responseJson);
  12. }
  13. class Post {
  14. final int userId;
  15. final int id;
  16. final String title;
  17. final String body;
  18. Post({this.userId, this.id, this.title, this.body});
  19. factory Post.fromJson(Map<String, dynamic> json) {
  20. return Post(
  21. userId: json['userId'],
  22. id: json['id'],
  23. title: json['title'],
  24. body: json['body'],
  25. );
  26. }
  27. }