1

我想从服务器获取数据。我用 http 和 dio 测试获取数据。在他们两个中,如果我从本地服务器获取数据一切正常,我可以获得响应,但是当我使用 url 从服务器获取数据时它不起作用。

这是我的代码:

class MyAppState extends State<MyHome> {

  /* void getHttpDio() async {
    try{
      var url = 'https://reqres.in/api/users?page=2';
      var response = await http.get(url);
      print( response.body);
    }catch(e){
      print(e);
    }
  }*/

  Future getHttp() async {
    try{
      var dio=Dio();
      var response=await dio.get("https://reqres.in/api/users?page=2");
      print(response.data);
    }catch(e){
      print(e);
    }
  }

  @override
  void initState() {
    super.initState();
    getHttp();
  }

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("appbar title"),
      ),
      body: Text("clicksite"),
      floatingActionButton: FloatingActionButton(
        child: Text("run"),
        onPressed: () {
        },
      ),
    );
  }
}

它是控制台:

Launching lib\main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
Built build\app\outputs\apk\debug\app-debug.apk.
Installing build\app\outputs\apk\app.apk...
Syncing files to device Android SDK built for x86...
D/EGL_emulation( 3371): eglMakeCurrent: 0xe62690e0: ver 2 0 (tinfo 0xe6215630)
4

1 回答 1

0

我试过你的代码,它工作正常。我遇到的唯一问题是我无法使用print(). 我需要用'${response.data}'. 否则,它会抛出这个错误。

flutter: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String?'

除此之外,该片段运行良好,没有问题。我在 Flutter 2.8 和 dio 4.0.4 上运行

Future getHttp() async {
  try {
    var dio = Dio();
    var response = await dio.get("https://reqres.in/api/users?page=2");
    debugPrint(response.data);
  } catch (e) {
    debugPrint(e.toString());
  }
}
于 2022-01-10T17:06:10.327 回答