我正试图从网站获取数据
void main() async {
var resp = await http.get(
Uri.parse('https://m.example.com/example'),
headers: {
'User-Agent':
'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
},
);
print(resp.body);
}
但是当我把这个代码包装成一个函数时,resp返回空
Future getLiveHtml(String url) async {
var resp = await http.get(
Uri.parse(url),
headers: {
'User-Agent':
'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
},
);
return resp.body;
}
如何修复?
您应该在方法Future<String>
描述中指定返回的类型,如下所示:
library shfl;
import 'dart:convert';
import 'package:http/http.dart' as http;
static Future<String> getLiveHtml(String url) async {
var resp = await http.get(
Uri.parse(url),
headers: {
'User-Agent':
'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
},
);
return resp.body;
}
然后用await
语句在async
函数中调用它,如下所示:
import 'package:flutter_test/flutter_test.dart';
import 'package:shfl/shfl.dart';
void main() {
test('prints html from google', () async {
var rez = await Stuff.getLiveHtml("https://google.com/");
print(rez);
});
}
您的项目使用的是http
包的哪个版本?