flutter - DioError 显示数据时出现 Http 状态错误 [401]
问题描述
我正在尝试将 API 中的数据显示到屏幕上,但由于 401 错误,我无法执行此操作,请查看我的代码并告诉我到底出了什么问题,我认为我编写的 API 不正确。目前我正在尝试自己查找信息,但我认为问题出在 API 中,如果是这样,究竟是什么问题?
代码 :
接口:
class ApiService {
Dio dio = new Dio();
var token ="token";
var refresh_token ="token";
Future getUserCards() async {
try {
Response resp;
var get_cards = "https://example/api/cards";
resp = await dio.get(get_cards);
dio.options.headers["Authorization"] = "Bearer ${token}";
dio.options.headers['Content-Type'] = "application/json";
var json = (resp.data);
var value = json["id"]["row"]["seq_num"]["text"];
return value;
} catch (e) {
print(e);
}
Future loginUser(String username, String password) async {
var storage = new FlutterSecureStorage();
await storage.write(key: 'JWT', value: token);
var login = "https://example/users/login/";
final data = {"username": username, "password": password};
Response response;
response = await dio.post(login, data: data);
dio.options.headers["Authorization"] = "Bearer ${token}";
dio.options.headers['Content-Type'] = "application/json";
if (response.statusCode == 200) {
Get.to(CardScreen());
return response.data;
} else if (response.statusCode == 401) {
var refreshToken = await dio.post(
"https://example.api/cards/refresh/");
response = await dio.post(refresh_token, data: data);
dio.options.headers["Authorization"] =
"Bearer ${token},'Content-Type': 'application/json','refresh_token': '$refresh_token'";
storage = response.data["token"];
refresh_token = response.data["refresh_token"];
return loginUser("username", "password");
} else
return null;
}
}
用户界面:
children: [
Expanded(
child: FutureBuilder<dynamic>(
future: ApiService().getUserCards(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
} else {
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return Card(
child: Text(snapshot.data[index]),
);
});
}
},
)
解决方案
推荐阅读
- javascript - 在 SVG 中是否可以推送/弹出矩阵变换?
- java - 运行 jar 时找不到或加载主类
- oracle - 是否可以在 SQLPLUS 中设置默认列格式?
- java - 如何在 Spring Boot 中注册 Alexa V2 Servlet
- redirect - 如何从控制器操作重定向发布请求?
- c# - 在 C# 类中从另一个泛型类型参数暗示一个泛型类型参数
- azure - 将预编译的 f# 函数部署到 Azure Functions v2
- angularjs - AngularJS:将鼠标悬停在键上时,在文本区域中显示其值
- design-patterns - 控制反转、依赖反转原理和依赖注入是如何关联的?
- javascript - 如何使用条件参数在mongodb中查询多个文档