Flutter 不会从 PHP API 返回任何数据,但 PHP/Curl 制作的浏览器、邮递员和客户端会返回任何数据

问题描述 投票:0回答:1

如标题所示,我的问题是 Flutter 3.16.3 和 http: ^1.1.2 - 我正在使用:Windows 11 - Developing for Android, VSCode。

我在 Flutter 中的代码不会继续超出

final response
行,如下所示:

Future<Users> fetchAlbum() async {
    final baseHeader = {
        HttpHeaders.connectionHeader: "keep-alive",
        HttpHeaders.accessControlAllowOriginHeader: "*",
        HttpHeaders.contentTypeHeader: "application/json; charset=utf-8",
        HttpHeaders.accessControlAllowHeadersHeader: "*.",
        HttpHeaders.accessControlAllowMethodsHeader: "POST, GET",
        HttpHeaders.accessControlMaxAgeHeader: 86400.toString(),
     };
    
      final response = await http.get(
          Uri.parse('http://apiclbrb.test/login/controller/get_all_users_sem_auth'),
          headers: baseHeader);
    
      if (response.statusCode == 200) {


我用 PHP 创建了返回 JSON 的 API。

然后PHP做的API返回数据:

  1. 在浏览器中直接输入API URL;
  2. 在邮递员处;
  3. 在使用 PHP/Curl 制作的客户端应用程序中;
  4. 仅在 Flutter 中不起作用。

附加信息:

1 - 如果我删除 URI 的任何部分,例如 http://,Flutter 会正确显示 URL 错误:

发生异常。
ArgumentError(无效参数:URI apiclbrb.test/login/controller/get_all_users_sem_auth 中未指定主机)

这表明Flutter输入了完整的URI并且不认为这是一个错误,但由于某种原因它没有进行。

2 - 至于环境,使用 Flutter doctor 我没有任何问题。

3 - Postman 标头 - 返回 Status: 200 OK,是:

Postman headers return.

无论如何,我需要在 Flutter 或 PHP API 中定义什么才能让两者进行对话?我希望有人已经经历过这个。

php flutter http get
1个回答
0
投票

问题解决了。即便如此,我也不会删除这个问题,因为同事可能也会经历同样的事情。

问题出在 URL 上。尽管这听起来不错,但它只是一个网址。

当我将 URL 放入浏览器或 Postman 或使用 Curl 的客户端应用程序时,每个人都使用 laragon 给出的格式,即: http://apiclbrb.test/login/controller/get_all_users_sem_auth 我相信 xamp 或任何其他使用 PHP 的 Web 开发环境都会像这样。

当我使用这个 URL 并将其放入 Flutter 中时,没有任何反应。所以我将网址更改为:http://192.168.18.2/apiclbrb/login/controller/get_all_users_sem_auth/

使用 ipconfig,我看到了我机器的 IPv4 地址,瞧,问题解决了,看到 Flutter 中出现的数据:

Flutter returning the data

我希望它对某人有价值。给每个人一个拥抱。问题解决了。我只是不知道如何将其标记为已解决。

© www.soinside.com 2019 - 2024. All rights reserved.