在Flutter中使用http GET请求时出现问题

时间:2020-05-01 00:39:21

标签: http flutter

因此,我得到了Flutter应用程序的模板,该应用程序使用HTTP get请求从网站检索其所有数据。

我有以下获取餐厅列表的方法:

 Future<Stream<Restaurant>> getNearRestaurants(LocationData myLocation, LocationData areaLocation) async {
  String _nearParams = '';
  String _orderLimitParam = '';
  if (myLocation != null && areaLocation != null) {
    _orderLimitParam = 'orderBy=area&limit=5';
    _nearParams = '&myLon=${myLocation.longitude}&myLat=${myLocation.latitude}&areaLon=${areaLocation.longitude}&areaLat=${areaLocation.latitude}';
  }
  final String url = '${GlobalConfiguration().getString('api_base_url')}restaurants?$_nearParams&$_orderLimitParam';
  final client = new http.Client();
  final streamedRest = await client.send(http.Request('get', Uri.parse(url)));

  return streamedRest.stream.transform(utf8.decoder).transform(json.decoder).map((data) => Helper.getData(data)).expand((data) => (data as List)).map((data) {
    return Restaurant.fromJSON(data);
  });
}

但是,当我将模板的 url 变量替换为自己的网站时,该应用程序卡住了,因为它无法从我的网站检索相同的信息。

我可能会缺少什么?问题出在代码或网站上吗?

更新1:

我用try / catch块将其包围,这给了我一个“错误的证书例外”。。这可能是因为我的网站没有SSL证书,所以我为自认证网站的HttpClient添加了一个例外:

  bool _certificateCheck(X509Certificate cert, String host, int port) =>
  host == '<domain>'; 

  HttpClient client2 = new HttpClient()..badCertificateCallback = (_certificateCheck);
  HttpClientRequest request = await client2.getUrl(Uri.parse(url));
  var response = await request.close(); // sends the request
  // transforms and prints the response
  response.transform(Utf8Decoder()).listen(print);

此代码在我需要从其获取JSON数据的页面上显示了错误404:未找到

我还安装了邮递员,并使用GET语句检查了我的网站,找到了我尝试在上面发布的颤振代码中检索到的相同餐馆列表,并看到以下内容: Postman GET screenshot

更新2:

所以我在网站上配置了SSL,问题仍然存在。我尝试通过邮递员测试GET请求,它也返回错误404页面。我尝试浏览服务器文件和laravel日志,但没有成功。

好像我的网站无法路由到我的API文件夹中的特定页面。但是它们都是在api.php中定义的。

0 个答案:

没有答案