Flutter之HTTP请求
条评论APP开发或多或少都要用到http网络请求,在Flutter中http请求的使用方式非常简单,只需在引入http库,设置url等必要参数后,调用http.get()
或者http.post()
方法即可。
Get方式请求
首先需要在 pubspec.yaml 中添加依赖:
1 | dependencies: |
然后调用http.get()方法即可:1
2
3
4
5
6
7
8import 'package:http/http.dart' as http;
[...]
loadData() async {
String dataURL = "https://api.bmob.cn/1/classes/book/";
http.Response response = await http.get(dataURL);
print("response body : ${response.body}");
}
}
设置http请求头 header:1
2
3
4
5
6
7
8
9loadData() async {
String dataUrl = "https://api.bmob.cn/1/classes/book/";
Map<String, String> map = new Map();
map["Content-Type"] = "application/json";
map["X-Bmob-Application-Id"] = "ce30565639d0fb10cd925b5b024c3408";
map["X-Bmob-REST-API-Key"] = "4057ff07b1bec5590fb4ff0a16141938";
http.Response response = await http.get(dataUrl, headers: map);
print("${response.body}");
}
请求成功后刷新界面:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17loadData() async {
String dataUrl = "https://api.bmob.cn/1/classes/book/";
Map<String, String> map = new Map();
map["Content-Type"] = "application/json";
map["X-Bmob-Application-Id"] = "ce30565639d0fb10cd925b5b024c3408";
map["X-Bmob-REST-API-Key"] = "4057ff07b1bec5590fb4ff0a16141938";
http.Response response = await http.get(dataUrl, headers: map);
print("${response.body}");
//解析数据
BookResponse baseResponse = new BookResponse(response.body);
//通知界面更新状态,刷新界面
setState(() {
_books = baseResponse.data;
});
}
Post方式请求
将get方式中的http.get() 方法改为 http.post() 方法,并添加参数body即可:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19void _postData(Book book) async {
String dataUrl = "https://api.bmob.cn/1/classes/book/";
//设置请求头
Map<String, String> map = new Map();
map["Content-Type"] = "application/json";
map["X-Bmob-Application-Id"] = "ce30565639d0fb10cd925b5b024c3408";
map["X-Bmob-REST-API-Key"] = "4057ff07b1bec5590fb4ff0a16141938";
try {
//使用Post方式
http.Response response = await http.post(dataUrl, headers: map, body: json.encode(book));
print("${response.body}");
} on Exception catch (e) {
print("exception $e");
SnackBar mSnackBar = new SnackBar(content: new Text("上传数据错误"));
Scaffold.of(context).showSnackBar(mSnackBar);
}
}
更多用法参考官方示例