在Flutter中使用Http GET请求Android 11+上的数据,需要在AndroidManifest.xml文件中添加两个权限,并在Android代码中使用NetworkPolicy来解决问题。以下是示例代码:
AndroidManifest.xml文件:
network_security_config.xml文件:
Flutter代码:
import 'dart:io';
Future
final response = await client.getUrl(Uri.parse("https://example.com/data.json")) .then((HttpClientRequest request) => request.close()) .then((HttpClientResponse response) => response) .catchError((error) { throw error; });
if (response.statusCode != 200) { throw Exception('Failed to load data'); }
final responseBody = await response.transform(utf8.decoder).join(); print(responseBody); }
这里的getData函数使用了HttpClient来发起Http GET请求。在创建HttpClient实例之前,必须为此实例设置badCertificateCallback,以便在测试环境下,忽略证书错误。在getUrl()方法中,我们需要传递一个Uri参数,该参数是我们接收数据的地址。请求销毁后,我们需要调用response()来返回Http响应。最后我们需要将响应主体(response body)转换成字符串以查看结果。