无法使用带有工作 api 的 http.get flutter 获取数据

Posted

技术标签:

【中文标题】无法使用带有工作 api 的 http.get flutter 获取数据【英文标题】:Unable to fetch data using http.get flutter with a working api 【发布时间】:2021-07-19 11:43:08 【问题描述】:

上下文

我有一个 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),通过单击它,我可以通过浏览器获取数据。未执行变量“响应”的打印,这让我认为问题来自 vUri。虽然,我尝试使用 URI Http 构造函数 [Uri.http()] 创建 URI,但我看到了相同的行为。

预期结果

我希望能看到打印出来的结果

对我哪里出错有任何想法吗?谢谢:)

【问题讨论】:

使用:Uri.parse('http://product.acirfa.tech:3000/products/224213463241') 我已经尝试将其直接放入 http.get() 但没有奏效。感谢您的建议! 可能是android 9或更高版本的原因,您应该尝试***.com/questions/51902629/… 【参考方案1】:
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 上发布您的应用。

【讨论】:

以上是关于无法使用带有工作 api 的 http.get flutter 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 无法通过 http.get 从 api 获取数据

带有路径参数问题的 Flutter http.get

带有$ http.get的`while`或`for`循环

带有 Vue 和 Laravel API 的推送器无法正常工作

使用来自 API 的 $http.get 进行 Angular.js 本地开发

如何通过 HTTP Get 使用 WCF 服务(在 Visual Studio 2010 中)