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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

dio拦截器 flutter_详解flutter之网络请求dio,请求,拦截器简单示例

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dio拦截器 flutter_详解flutter之网络请求dio,请求,拦截器简单示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

flutter一直很火的網絡請求插件dio

直接上代碼,寫成一個類,可以直接使用

包含請求的封裝,攔截器的封裝

import 'package:dio/dio.dart';

import 'dart:async';

import 'dart:io';

import './apidomain.dart';

import './httpHeaders.dart';

import 'package:shared_preferences/shared_preferences.dart';

class DioUtil{

static Dio dio = new Dio();

//請求部分

static Future request(url,{formData})async{

try{

Response response;

dio.options.headers = httpHeaders;

dio.options.contentType = ContentType.parse("application/json;charset=UTF-8");

if(formData == null){

response = await dio.post(serviceUrl+url);

}else{

response = await dio.post(serviceUrl+url,data:formData);

}

if(response.statusCode == 200){

return response;

}else{

throw Exception("接口異常R");

}

}catch(e){

print("網絡出現錯誤${e}");

}

}

//攔截器部分

static tokenInter(){

dio.interceptors.add(InterceptorsWrapper(

onRequest:(RequestOptions options){

// 在發送請求之前做一些預處理

//我這邊是在發送前到SharedPreferences(本地存儲)中取出token的值,然后添加到請求頭中

//dio.lock()是先鎖定請求不發送出去,當整個取值添加到請求頭后再dio.unlock()解鎖發送出去

dio.lock();

Future future = Future(()async{

SharedPreferences prefs =await SharedPreferences.getInstance();

return prefs.getString("loginToken");

});

return future.then((value) {

options.headers["Authorization"] = value;

return options;

}).whenComplete(() => dio.unlock()); // unlock the dio

},

onResponse:(Response response) {

// 在返回響應數據之前做一些預處理

return response; // continue

},

onError: (DioError e) {

// 當請求失敗時做一些預處理

return e;//continue

}

));

}

}

httpHeaders文件則是放一些請求頭信息如下

const httpHeaders={

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

'Authorization': '666',

'Content-Type': 'application/json;charset=UTF-8',

'Origin': 'http://localhost:8080',

'Referer': 'http://localhost:8080/',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',

};

apidomain文件則是放api的地址信息如下

const serviceUrl = 'http://39.xxx.xxx.xx:8080';

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的dio拦截器 flutter_详解flutter之网络请求dio,请求,拦截器简单示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。