Flutter HTTP 请求使用 Basic Auth + 传递用户和密码来接收用户数据

Posted

技术标签:

【中文标题】Flutter HTTP 请求使用 Basic Auth + 传递用户和密码来接收用户数据【英文标题】:Flutter HTTP request using Basic Auth + passing user and password to receive user data back 【发布时间】:2019-10-23 15:34:20 【问题描述】:

我是一个新手,不是专业的编码员(所以要温柔),我正在尝试构建一个必须连接到 HTTP 中的 Web/服务器 API 的 Flutter 应用程序。 根据文档,要建立连接,必须使用标头,此标头使用基本 Ath 方法,带有登录名和密码 + 内容类型。 到那时我想我已经找到了方法(参见下面的代码 sn-p),但我必须向 API 发送用户 ID 和用户密码才能接收回用户数据。我必须谦虚地承认我被困在那里...... 我提前感谢您的帮助! 伯纳德

我的代码(导入 dart:convert et package:http/http.dart + 安装所需的依赖项后):

void brol() async 
String username = 'user';
String password = 'pass';
String userpass = '$username:$password';
String basicAuth =
'Basic ' + userpass;
print(basicAuth);
Response r = await get('https://www.adresse/login.php',
headers: 'authorization': basicAuth);

非常感谢您的回答, 伯纳德

【问题讨论】:

How to pass basic auth credentials in API call for a Flutter mobile application?的可能重复 您需要 base64 凭据 - 请参阅链接的问题/答案 【参考方案1】:

您的凭据应为 base64。您可以在评论中访问SO post。

您的代码应如下所示:

main() async 
  String username = 'user';
  String password = 'pass';
  String basicAuth =
      'Basic ' + base64Encode(utf8.encode('$username:$password'));
  print(basicAuth);

  Response r = await get('https://www.adresse/login.php',
      headers: <String, String>'authorization': basicAuth);
  print(r.statusCode);
  print(r.body);

另见this blog post。

【讨论】:

以上是关于Flutter HTTP 请求使用 Basic Auth + 传递用户和密码来接收用户数据的主要内容,如果未能解决你的问题,请参考以下文章

Http Basic认证

HTTP Basic Auth

使用JAVA请求需要Basic身份验证的网页

JS实现HTTP请求头-Basic Authorization

HTTP认证模式:Basic & Digest

java实现HTTP Basic认证