作爲flutter網絡請求框架的翹楚------Dio(https://pub.dev/packages/dio),插件的添加、使用,前面鏈接很詳細。在這裏說下我想記錄下來的某某…
- 添加Header
添加Header有兩種情況
// 設置全局Header
dio.options.baseUrl = Api.BASE_URL;
dio.options.connectTimeout = 5 * 1000;
dio.options.sendTimeout = 5 * 1000;
dio.options.receiveTimeout = 3 * 1000;
dio.options.headers = {HttpHeaders.acceptHeader:"application/json;charset=UTF-8"};
// Map<String, dynamic> headers = new Map();
// headers['Content-Type'] = "application/json;charset=UTF-8";
// dio.options.headers = headers;
// 設置單個Header
static Map<String, dynamic> getHeader(){
Map<String, dynamic> headers = new Map();
headers['Content-Type'] = "application/json;charset=UTF-8";
return headers;
}
static Future<Response> getCcTkoken(){
return dio.get(GET_TOKEN,options: Options(headers: getHeader()));
}
注意:單個設置的Header覆蓋不了全局的Header,意思是說會出現兩個Header類型
- 表單提交
static Map<String, dynamic> getLoginHeader(){
Map<String, dynamic> headers = new Map();
headers['Content-Type'] = "application/x-www-form-urlencoded";
return headers;
}
static Future<Response> login(String username, String passwd,String ccten) {
return dio.post(LOGIN_PATH, data: {
"username": username,
"password": passwd,
"ccten": ccten,
},
//在這設置contentType類型,系統會主動把這個請求設置爲表單提交
options: Options(headers: getLoginHeader(),contentType: ContentType.parse("application/x-www-form-urlencoded"))
);}
- 生成請求對應的Bean文件
首先引入依賴:json_serializable: ^3.0.0 ; build_runner: ^1.6.1 ;json_annotation: ^2.4.0
;然後打開大佬的工具(https://caijinglong.github.io/json2dart/index_ch.html)
把生成的dart文件放到目錄裏後,如果用的是Android studio 直接打開底部導航欄Terminal,輸入
flutter packages pub run build_runner build
如果用的是其他軟件,可以在工程根目錄下按住shift+鼠標右鍵,選擇打開powerShell窗口,輸入上面命令,即可生成對應的X.g.dart文件。
注意:如果上面依賴沒依賴進去,註定會報錯。