Flutter http 请求不接受 headers 但它适用于邮递员

Flutter http request not accepting headers but it works on postman

我的经历非常令人沮丧。我正在向 api 发出 post 请求,在 postman 上运行良好,但拒绝在 flutter 上运行。

这是错误响应,告诉我这是 headers 的问题。

 {"message":"Missing/Incorrect Security Key Header","apiVersion":"v1","transactionRef":"N202204281825312267","data":null,"error":{"code":401,"message":"Authorization failed for this request!"}}

我的请求

 static Future<dynamic> postRequest(String url) async {
    http.Response response = await http.post(Uri.parse(url),
      headers: <String, String>{
        "Access-Key" : "6a637874-0394-4d9d-a803-86323c1ddc4d",
        "Accept": "application/json",
        "Content-Type" : 'application/json',
      },
    );
    print(response.body);
    print(url);
    try {
      if (response.statusCode == 200) {
        String data = response.body;
        var decodedData = jsonDecode(data);
        return decodedData;
      } else {
        return response.body;
      }
    } catch (e) {
      return response.body;
    }
  }

我想向您介绍 Flutter 中的另一个包,它可以更轻松地处理 http 请求,它叫做 Dio。一切都是一样的,它也默认删除了一些样板,你不必解析 url,你可以直接传递 url 字符串。您不必 encode/decode json。代替 在 http 中传递 headers 属性,dio 的工作方式如下,

将依赖项添加到 pubspec.yaml 文件并导入 dio.dart 文件。

说明可在此处找到https://pub.dev/packages/dio

这是一个例子:

Future fetchData () async {
  Dio dio = new Dio();
  String url = 'example.com';
  
  final response = await dio.post(
  url,
  options: Options(
    headers: {'Access-Key': 'key'},
  );
  print(response.data);
}