| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import 'package:dio/dio.dart';
- import 'api.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- class NetUtil {
- static const String GET = "get";
- static const String POST = "post";
- //get请求
- static void get(String url, Function callBack,
- {Map<String, dynamic> params, Function errorCallBack}) async {
- if (!url.startsWith("http")) {
- url = domain + url;
- }
- _request(url, callBack,
- method: GET, params: params, errorCallBack: errorCallBack);
- }
- //post请求
- static void post(String url, Function callBack,
- {Map<String, dynamic> params, Function errorCallBack}) async {
- print('**************');
- if (!url.startsWith("http")) {
- url = domain + url;
- }
- _request(url, callBack,
- method: POST, params: params, errorCallBack: errorCallBack);
- }
- //具体的还是要看返回数据的基本结构
- //公共代码部分
- static void _request(String url, Function callBack,
- {String method,
- Map<String, dynamic> params,
- Function errorCallBack}) async {
- print("<net> url :<" + method + ">" + url);
- if (params != null && params.isNotEmpty) {
- print("<net> params :" + params.toString());
- }
- String errorMsg = "";
- int statusCode;
- final prefs = await SharedPreferences.getInstance();
- String _electricContest = prefs.getString('token') != null
- ? prefs.getString('token')
- : '';
- try {
- Response response;
- if (method == GET) {
- //组合GET请求的参数
- if (params != null && params.isNotEmpty) {
- StringBuffer sb = new StringBuffer("?");
- params.forEach((key, value) {
- sb.write("$key" + "=" + "$value" + "&");
- });
- String paramStr = sb.toString();
- paramStr = paramStr.substring(0, paramStr.length - 1);
- url += paramStr;
- }
- response = await Dio()
- .get(url, options: Options(headers: {"token": _electricContest}));
- } else {
- if (params != null && params.isNotEmpty) {
- FormData _formData = FormData.from(params);
- response = await Dio().post(url,
- data: _formData,
- options: Options(headers: {"token": _electricContest}));
- } else {
- response = await Dio().post(url,
- options: Options(headers: {"token": _electricContest}));
- }
- }
- statusCode = response.statusCode;
- print(response);
- //打印结果
- //处理错误部分
- if (statusCode < 0) {
- errorMsg = "网络请求错误,状态码:" + statusCode.toString();
- _handError(errorCallBack, errorMsg);
- return;
- }
- if (callBack != null) {
- callBack(response.data);
- print("<net> response data:" + response.data);
- }
- } catch (exception) {
- _handError(errorCallBack, exception.toString());
- }
- }
- //处理异常
- static void _handError(Function errorCallback, String errorMsg) {
- if (errorCallback != null) {
- errorCallback(errorMsg);
- }
- print("<net> errorMsg :" + errorMsg);
- }
- }
|