一、前言
在Flutter中进行网络请求通常使用http和dio来处理。http是dart开发的多平台网络请求,而dio是flutter中文社区开发的(https://flutterchina.club)。一般来说根据官网的教程来的话,会使用http来进行网络请求。这里对http的常用网络请求做一个基本的演示,以便达到实际开发中快速使用的目的。如果需要更多的用法可以下载http库的github代码,查看里面的测试用例
二、基本用法
1、post请求
post请求是开发中经常使用的请求,主要是可以携带一些参数在body里面,来防止用户获取信息。简单的示例代码如下(这个代码来自https://pub.flutter-io.cn/packages/http):
import 'package:http/http.dart' as http;
var url = 'https://example.com/whatsit/create';
var response = await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');
print(await http.read('https://example.com/foobar.txt'));
2、get请求
import 'package:http/http.dart' as http;
var url = 'https://example.com/whatsit/create';
var header = {'Content-Type': 'application/json'};
var response = await http.get(url,headers:header);
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');
3、文件上传
import 'package:http/http.dart';
_uploadFile(String filePath) async{
String url = "http://39.106.158.176:9010/user/upload_headpic?uid=725304943665217536&token=1";
print("YM------->上传的路径:$url");
var uri = Uri.parse(url);
var request = new MultipartRequest("POST",uri);
var multipartFile = await MultipartFile.fromPath("headpic",filePath);
request.files.add(multipartFile);
StreamedResponse response = await request.send();
//这里返回值用到了Stream回调
// response.stream.transform(utf8.decoder).listen((value){
// print("上传文件的结果:$value");
// });
//如果需要对获取的值进行处理可以采取这种方式
// await for(String value in response.stream.transform(utf8.decoder)) {
// // return value;
// value += "+++";
// }
//如果只需要一个值的话,可以使用这种方式
// String result = await response.stream.transform(utf8.decoder).first;
}
三、参考链接
-
github的http
-
flutter教程的网络请求
-
http的文件上传