如何在Flutter移动应用程序的API调用中传递基本身份验证凭据?

时间:2018-05-09 01:50:23

标签: http dart flutter

我正在制作一个简单的Flutter移动应用,需要调用使用Basic Auth的API。

我可以使用电子邮件和电子邮件点击Postman中的API密码凭证,它编码电子邮件&在执行请求之前,Base64中的密码(假设用“:”分隔)。

我不知道如何在Flutter / Dart中做到这一点......

我已经修改了http包并试图进行Base64编码......但我只是从服务器上找回错误。

任何人都可以为基本身份验证请求提供一些指导或示例吗?

2 个答案:

答案 0 :(得分:19)

假设您的服务器希望username:password组合将其编码为UTF-8(有关详细信息,请参阅RFC 7617),然后使用:

import 'dart:convert';

import 'package:http/http.dart';

main() async {
  String username = 'test';
  String password = '123£';
  String basicAuth =
      'Basic ' + base64Encode(utf8.encode('$username:$password'));
  print(basicAuth);

  Response r = await get('https://api.somewhere.io',
      headers: {'authorization': basicAuth});
  print(r.statusCode);
  print(r.body);
}

答案 1 :(得分:0)

我知道已经晚了,但是如果可以帮助其他人,我会发布此消息。

import 'dart:convert';

var auth = 'Basic '+base64Encode(utf8.encode('$username:$password'));

Future<Response> callAPI(param) async {
    await dio.post('/api/test',
        data: {'param': param},
        options: Options(headers: <String, String>{'authorization': auth})); 
  }