dio是Flutter中文網開源的一個強大的Dart Http請求庫,支持Restful API、FormData、攔截器、請求取消、Cookie管理、文件上傳/下載、超時等...java
1.添加依賴#ios
dependencies: dio: 2.1.x #latest version
2.導入庫json
import 'package:dio/dio.dart'; //導入前須要配置
getapi
String data; void _getDio() async { Response response = await Dio().get("https://jsonplaceholder.typicode.com/posts/1"); print("get ====== "+response.toString()); final body = json.decode(response.toString()); setState(() { data = body['title']; print("title ====== "+data); }); }
post網絡
void _postDio() async { var headers = Map<String, String>(); headers['loginSource'] = 'IOS'; headers['useVersion'] = '3.1.0'; headers['isEncoded'] = '1'; headers['bundleId'] = 'com.nongfadai.iospro'; headers['Content-Type'] = 'application/json'; Dio dio = Dio(); dio.options.baseUrl = "http://api.juheapi.com/japi/toh"; dio.options.connectTimeout = 60000; dio.options.receiveTimeout = 60000; dio.options.headers.addAll(headers); dio.options.method = 'post'; var params = { 'v': '1.0', 'month': '7', 'day': '25', 'key': 'bd6e35a2691ae5bb8425c8631e475c2a' }; Options option = Options(method: 'post'); Response response = await dio.post("http://api.juheapi.com/japi/toh", /*data: { "v": "1.0", "month": "7", "day": "25", "key": "bd6e35a2691ae5bb8425c8631e475c2a" },*/ data: params, options: option); if (response.statusCode == 200) { debugPrint('===請求求url: ${response.request.uri.toString()}'); debugPrint('===請求headler: ${response.request.headers}'); debugPrint('===請求結果: \n${response.data}\n'); } else { print('請求失敗'); } }
調用:app
import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:dio/dio.dart'; class HttpDemo1 extends StatefulWidget { @override State<StatefulWidget> createState() { // TODO: implement createState return new HttpPage(); } } class HttpPage extends State<HttpDemo1> { @override void initState() { // TODO: implement initState super.initState(); _getDio(); _postDio(); } @override Widget build(BuildContext context) { // TODO: implement build return new Scaffold( appBar: new AppBar( title: new Text("Dio網絡請求"), ), body: new Center( child: new Text("$data"), ), ); } }
控制檯async
Dio庫 說明文檔ide