我正在开发一个简单的Flutter移动应用程序,需要调用一个使用基本身份验证的API。
我可以在Postman中使用电子邮件和密码凭据访问API,并且在执行请求之前对电子邮件和密码进行Base64编码(我假设用“:”分隔符)。
我不确定如何在Flutter/Dart中实现这一点...
我尝试了http包并尝试进行Base64编码...但是我仅从服务器获得错误。
有人能提供基本身份验证请求的指导或示例吗?
假设您的服务器期望用户名:密码
组合将被编码为UTF-8(有关更多详细信息,请参见RFC 7617),那么请使用以下代码:
import 'dart:convert';
import 'package:http/http.dart';
main() async {
String username = 'test';
String password = '123£';
String basicAuth =
'Basic ' + base64.encode(utf8.encode('$username:$password'));
print(basicAuth);
Response r = await get(Uri.parse('https://api.somewhere.io'),
headers: <String, String>{'authorization': basicAuth});
print(r.statusCode);
print(r.body);
}
我知道现在已经很晚了,但如果这篇文章能够帮助其他人,我还是想发布出来。
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}));
}