我需要从我的Flatter应用程序向API发出GET请求,该应用程序要求请求主体为JSON(原始).

我在Postman中用JSON请求体测试了API,它似乎运行良好.

enter image description here

现在,在我的Flutter 翼应用程序中,我也在try 做同样的事情:

_fetchDoctorAvailability() async {
    var params = {
      "doctor_id": "DOC000506",
      "date_range": "25/03/2019-25/03/2019" ,
      "clinic_id":"LAD000404"
    };

    Uri uri = Uri.parse("http://theapiiamcalling:8000");
    uri.replace(queryParameters: params);

    var response = await http.get(uri, headers: {
      "Authorization": Constants.APPOINTMENT_TEST_AUTHORIZATION_KEY,
      HttpHeaders.contentTypeHeader: "application/json",
      "callMethod" : "DOCTOR_AVAILABILITY"
    });

    print('---- status code: ${response.statusCode}');
    var jsonData = json.decode(response.body);

    print('---- slot: ${jsonData}');
}

但是,API给我一个错误,说明

{消息:缺少输入json,状态:false}

如何在flatter中为Http GET请求发送原始(或者更确切地说是JSON)请求体?

推荐答案

uri.replace...返回一个新的Uri,因此必须将其分配到一个新变量中,或直接用于get函数.

final newURI = uri.replace(queryParameters: params);

var response = await http.get(newURI, headers: {
  "Authorization": Constants.APPOINTMENT_TEST_AUTHORIZATION_KEY,
  HttpHeaders.contentTypeHeader: "application/json",
  "callMethod" : "DOCTOR_AVAILABILITY"
});

使用post:

      var params = {
        "doctor_id": "DOC000506",
        "date_range": "25/03/2019-25/03/2019" ,
        "clinic_id":"LAD000404"
      };

      var response = await http.post("http://theapiiamcalling:8000", 
      body: json.encode(params)
      ,headers: {
        "Authorization": Constants.APPOINTMENT_TEST_AUTHORIZATION_KEY,
        HttpHeaders.contentTypeHeader: "application/json",
        "callMethod" : "DOCTOR_AVAILABILITY"
      });

Flutter相关问答推荐

如何从外部控制有状态窗口小部件本身?

Android NFC未收到空的NFC标签

audioQuery不会等待判断存储权限

如何将Visual Studio代码中Flutter 应用的包名从com.example.XXX更改为Play Store中受限制的包名称

BottomNavigationBar-我应该使用Container和Align吗?

未处理的异常:第1行第5列出现错误:无效的媒体类型:应为/&;.从API获取数据时在Flutter中

使用 Firebase Realtime 实现高效流式传输

创建仅定义导出的文件是否有意义?

尽管我的 url 链接正确,但 ArgumentError(无效参数:URI 文件中未指定主机:///)错误

Select 文本时如何更改 Flutter 中的光标 colored颜色 ?

在参数为空时保持命名参数的默认值

用户文档 ID 与 Firestore 中的用户 ID 相同

Flutter 应用程序在启动画面冻结(java.lang.RuntimeException:无法启动活动 ComponentInfo)

如何在两个不同的路由(屏幕)之间正确设置 BlocProvider?

如何从 Flutter Slider Widget 中移除发光效果?

有什么方法可以将 ChangeNotifier 与 ValueListenableBuilder 一起使用

如何在手势检测器中获得涟漪效应

Flutter 中的无效日期格式 2022 年 11 月 14 日

Flutter Bloc Todo 示例 - 收听存储库中的单个 todo

如何在 Flutter 中创建类似箭头标签的设计