无法使用 http.get flutter 和有效的 api 获取数据

问题描述

背景

我有一个 API (http),我可以通过 Postman 使用 GET 方法访问它,没有任何问题。 我想使用 http 包从这个 API 为我的 Flutter 应用程序获取数据。

问题

在进行网络请求时,使用 http 包的 http.get() 方法,如下所示,我无法从 API 中获取数据。

Future<Product> fetchProducts(String barcodeId) async {
var vPath = '/products/' + barcodeId;
var vUri = new Uri(
  scheme: 'http',host: 'product.acirfa.tech',port: 3000,path: vPath,);
// /products/224213463241
print(vPath);
// http://product.acirfa.tech:3000/products/224213463241
print(vUri);
var response = await http.get(vUri);
print(response);
if (response.statusCode == 200) {
  print('OK');
} else {
  print('KO');
}}

我已经打印出作为参数传递给 http.get() 方法的 URI (vUri),通过单击它,我通过浏览器获取数据。未执行变量“response”的打印输出,这让我认为问题来自 vUri。虽然,我尝试使用 URI Http 构造函数 [Uri.http()] 创建 URI,但我看到了相同的行为。

预期结果

我希望能看到打印出来的内容

对我哪里出错有什么想法吗?谢谢:)

解决方法

final _uri = Uri.http('www.domainName.com','furtherLink/page.php',{'key': '$value'});

final response = await http.get(
        _uri,headers: {'authorization':'$_auth'}
).catchError((error) {
  throw error;
});

if (response.statusCode == 200) {
  print('OK');
} else {
  print('KO');
}}

由于您使用的是 http 而不是 https,因此它被认为是不安全的。确保通过权限。

注意:如果使用不安全的网络,将很难在 Android 和 IOS 上发布您的应用。