无法使用带有工作 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 获取数据
带有 Vue 和 Laravel API 的推送器无法正常工作