【发布时间】:2019-11-27 02:16:25
【问题描述】:
实际上我想在我的项目中使用 dio(Dart 的 Http 客户端)来处理所有 http 请求,我查看了官方文档但无法申请。
使用包中的 http 客户端:http/http.dart 它运行良好,但我想与 Dio 一起使用。任何人都可以检查并帮助我,为什么它不起作用。提前致谢!
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:thunder_mobile/models/login_modal.dart';
import 'package:thunder_mobile/utils/all_shared_preference_helper.dart';
import 'package:thunder_mobile/utils/http.dart';
import 'package:dio/dio.dart';
class ApiHelper {
// Dio _dio = new Dio();
var url = "http://5c9db1fd3be4e30014a7d3da.mockapi.io/";
final thunderBaseUrl = 'https://{domain}/api/v1/';
var headers = {'Content-Type': 'application/json'};
String token;
var sharedPref = new AllSharedPreferenceHelper();
var thunderHeaders = {
'content-type': 'application/json',
'x-requested-with': 'XMLHttpRequest',
};
var thunderImageHeaders = {
'content-type': 'multipart/form-data',
'x-requested-with': 'XMLHttpRequest',
};
final loginHeader = {'X-Requested-With': 'XMLHttpRequest'};
setApiHeader() {
sharedPref.getLoginData().then((res) {
LoginModel loginData = LoginModel.fromJson(json.decode(res));
if (loginData.accessToken != null) {
thunderHeaders['authorization'] = 'Bearer ' + loginData.accessToken;
token = loginData.accessToken;
}
});
}
// --------------------http BASED (Working Successfully)--------------------------------------
Future getThunderRequest(apiUrl) async {
await setApiHeader();
final http.Response response =
await http.get(thunderBaseUrl + apiUrl, headers: thunderHeaders);
return response;
}
Future postThunderRequest(apiUrl, body) async {
await setApiHeader();
final response = await http.post(thunderBaseUrl + apiUrl,
headers: thunderHeaders, body: json.encode(body.toJson()));
return response;
}
// ----------------------DIO API'S(not Working)------------------------------------
Future getDioRequest(apiUrl) async {
Dio dio = new Dio();
dio.interceptors
.add(InterceptorsWrapper(onRequest: (RequestOptions options) async {
await setApiHeader();
options.headers["token"] = thunderHeaders;
return options;
}));
try {
Response response = await Dio().get('https://{domain}/api/v1/master');
print(response);
} catch (e) {
print(e);
}
}```
【问题讨论】:
标签: api flutter dart httpclient