代码之家  ›  专栏  ›  技术社区  ›  Ankit Shukla

我无法在flutr中对特定url进行rest api调用

  •  0
  • Ankit Shukla  · 技术社区  · 6 年前

    我无法在此url上进行简单的get调用>>>

    http://54.254.255.202:8080/user/status/S5454523D/ST. 
    

    这个url对其他任何东西都很有用,比如postman、chrome、android或react native。我特别不知道为什么它只在20次尝试中有1次奏效。在日志里我发现了这样的东西

    E/flutter: [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
    Connection closed before full header was received
    

    这里还有我用来尝试这个简单的get请求的代码

    Future<dynamic> getStatus() async {
    var res;
    String url = "http://54.254.255.202:8080/user/status/S5454523D/ST";
    print(url);
    var response = await http.get(
        Uri.encodeFull(url),
        headers: {"Accept": "application/json"}
        ).catchError((error){
          print(error);
    }).whenComplete((){
      print("completed");
    });
    print(response);
    return res;
    }
    

    我正在使用的任何其他URL都正常工作。请帮助。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Richard Heap    6 年前

    试着简化你的 getStatus 方法。这个版本似乎可靠地返回了解码后的json。

    Future<Map> getStatus() async {
      try {
        Response r = await http.get(
          'http://54.254.255.202:8080/user/status/S5454523D/ST',
          headers: {
            'Accept': 'application/json',
          },
        );
        return json.decode(r.body);
      } catch (e) {
        return {'error': e.toString()};
      }
    }
    
    main() async {
      print(await getStatus());
    }