【问题标题】:Unable to fetch data using http.get flutter with a working api无法使用带有工作 api 的 http.get flutter 获取数据
【发布时间】: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或更高版本的原因,您应该尝试stackoverflow.com/questions/51902629/…

标签: api flutter http get uri


【解决方案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 上发布您的应用。

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2019-06-19
    • 1970-01-01
    • 2021-08-20
    • 2016-10-27
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多