【问题标题】:Flutter Dart HTTP headers not working. Sending Request with "headers". On response authorization error, {"CODE":401,"MESSAGE":"Unauthorized"}Flutter Dart HTTP 标头不起作用。发送带有“标头”的请求。在响应授权错误时,{"CODE":401,"MESSAGE":"Unauthorized"}
【发布时间】:2019-11-02 23:49:24
【问题描述】:

向 API 发送带有授权和其他标头的请求,其返回未经授权。似乎服务器在请求时没有获取标头。我尝试了不同的方法来根据请求发送 http 标头,但失败了。我试过 Dio 、 HttpClient 、 Normal http 请求都失败了。我在这件事上花了两天时间,仍然没有解决。来自 Postman,其他媒体请求正在运行。

Map<String,String> reqHeaders = {
  'Content-type': 'application/json',
  'Accept': 'application/json',
  "Authorization": "xxxxx",
  "langapi": "en"
};
Future<MzResponseData> getHttp() async {
  var dio = Dio();
  dio.options.baseUrl = baseUrl;
  dio.options.headers = reqHeaders;
  dio.options.contentType = ContentType.parse("application/json");
  Response response = await dio.get("/uri/");
  print(response);
}

【问题讨论】:

  • 尝试使用具有相同身份验证的 Postman。我认为邮递员也会出现错误
  • 我也尝试在邮递员上发送带有身份验证标头的请求,它工作正常。但在飞镖上,它给出了身份验证错误。在 dart 上请求时似乎没有附加标头。
  • 好的。什么类型的身份验证?
  • 授权:xxxxx
  • @syedshah 你解决了吗?请问你是怎么解决的,我遇到了同样的问题,已经搜索了,我没有看到任何解决方案

标签: http flutter http-headers


【解决方案1】:

试试这个..

final response = await dio.get(
      url,
      options: Options(
        headers: {
          'Authorization': 'Bearer $token',
        },
      )
    );

【讨论】:

    【解决方案2】:
    Future<MzResponseData> getHttp() async {
      var dio = await Dio();
      dio.options.baseUrl = baseUrl;
        dio.options.headers = Options(headers: {'Authorization': 'Bearer $token'})//add your type of authentication
      dio.options.contentType = ContentType.parse("application/json");
      Response response = await dio.get("/uri/");
      print(response);
    }
    

    【讨论】:

    • 我试过你的代码,但它在行“选项(标题:{'Authorization'”。错误:'Options'类型的值不能分配给'Map'类型的变量
    • dio.options.headers.addAll(reqHeaders);我试过这个......但仍然无法正常工作
    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2017-08-07
    • 2017-07-08
    • 2018-07-24
    • 1970-01-01
    • 2016-11-10
    相关资源
    最近更新 更多