日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header

發(fā)布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

話不多說自己看代碼封裝的比較簡單,比較適合入門學(xué)習(xí)Dio。

import 'package:dio/dio.dart';

import 'Api.dart';

/*

* 封裝 restful 請求

*

* GET、POST、DELETE、PATCH

* 主要作用為統(tǒng)一處理相關(guān)事務(wù):

* - 統(tǒng)一處理請求前綴;

* - 統(tǒng)一打印請求信息;

* - 統(tǒng)一打印響應(yīng)信息;

* - 統(tǒng)一打印報錯信息;

*/

class DioUtils {

/// global dio object

static Dio dio;

/// default options

static const int CONNECT_TIMEOUT = 10000;

static const int RECEIVE_TIMEOUT = 3000;

static const String TOKEN = "1373a739fd8599909738511f41831623";

/// http request methods

static const String GET = 'get';

static const String POST = 'post';

static const String PUT = 'put';

static const String PATCH = 'patch';

static const String DELETE = 'delete';

/// 創(chuàng)建 dio 實例對象

static Dio createInstance() {

if (dio == null) {

/// 全局屬性:請求前綴、連接超時時間、響應(yīng)超時時間

var options = BaseOptions(

connectTimeout: 150000,

receiveTimeout: 150000,

responseType: ResponseType.json,

validateStatus: (status) {

// 不使用http狀態(tài)碼判斷狀態(tài),使用AdapterInterceptor來處理(適用于標準REST風(fēng)格)

return true;

},

baseUrl: Api.baseUrlDevelop,

headers: httpHeaders);

dio = new Dio(options);

}

return dio;

}

/// 清空 dio 對象

static clear() {

dio = null;

}

///Get請求

static void getHttp(

String url, {

parameters,

Function(T) onSuccess,

Function(String error) onError,

}) async {

///定義請求參數(shù)

parameters = parameters ?? {};

//參數(shù)處理

parameters.forEach((key, value) {

if (url.indexOf(key) != -1) {

url = url.replaceAll(':$key', value.toString());

}

});

try {

Response response;

Dio dio = createInstance();

response = await dio.get(url, queryParameters: parameters);

var responseData = response.data;

if (responseData['erroCode'] == 2000) {

if (onSuccess != null) {

onSuccess(responseData['result']);

}

} else {

throw Exception('erroMsg:${responseData['erroMsg']}');

}

print('響應(yīng)數(shù)據(jù):' + response.toString());

} catch (e) {

print('請求出錯:' + e.toString());

onError(e.toString());

}

}

///Post請求

static void postHttp(

String url, {

parameters,

Function(T) onSuccess,

Function(String error) onError,

}) async {

///定義請求參數(shù)

parameters = parameters ?? {};

//參數(shù)處理

parameters.forEach((key, value) {

if (url.indexOf(key) != -1) {

url = url.replaceAll(':$key', value.toString());

}

});

try {

Response response;

Dio dio = createInstance();

response = await dio.post(url, queryParameters: parameters);

var responseData = response.data;

if (responseData['erroCode'] == 2000) {

if (onSuccess != null) {

onSuccess(responseData['result']);

}

} else {

throw Exception('erroMsg:${responseData['erroMsg']}');

}

print('響應(yīng)數(shù)據(jù):' + response.toString());

} catch (e) {

print('請求出錯:' + e.toString());

onError(e.toString());

}

}

/// request Get、Post 請求

//url 請求鏈接

//parameters 請求參數(shù)

//method 請求方式

//onSuccess 成功回調(diào)

//onError 失敗回調(diào)

static void requestHttp(String url,

{parameters,

method,

Function(T t) onSuccess,

Function(String error) onError}) async {

parameters = parameters ?? {};

method = method ?? 'GET';

if (method == DioUtils.GET) {

getHttp(

url,

parameters: parameters,

onSuccess: (data) {

onSuccess(data);

},

onError: (error) {

onError(error);

},

);

} else if (method == DioUtils.POST) {

postHttp(

url,

parameters: parameters,

onSuccess: (data) {

onSuccess(data);

},

onError: (error) {

onError(error);

},

);

}

}

}

/// 自定義Header

Map httpHeaders = {

'Accept': 'application/json,*/*',

'Content-Type': 'application/json',

'token': DioUtils.TOKEN

};

使用

var param = {

'taskCode ': 'XC202001020003'};

DioUtils.requestHttp(

Api.verificationSurvey,

parameters: param,

method:DioUtils.GET,

onSuccess: (data) {

},

onError: (error) {

},

);

}

總結(jié)

以上是生活随笔為你收集整理的dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。