【问题标题】:Flutter DIO Unauthorized I/flutter ( 3668): 401颤振 DIO 未经授权的 I/颤振(3668):401
【发布时间】:2022-06-28 23:30:36
【问题描述】:

你好社区我有一个问题我已经尝试了几个小时我无法解决它并且一直在使用邮递员上的 DIO 库在颤动中向服务器发送带有授权的帖子请求它就像魅力一样但在颤动中它总是给* *

401 未经授权

**

这是我的代码

try {
      Response response =
      await Dio().post("https://somewebsite.com/public/api/addprod",
        data: data,
        options: Options(
            headers: {
              'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8;application/json;multipart/form-data',
              'Accept': 'application/json',
              "Authorization": "Bearer " +token!

        },
            followRedirects: false,
            validateStatus: (status) {
              return status! < 500; }
        ),
      );

这是我的邮递员图片

【问题讨论】:

    标签: json flutter http dio


    【解决方案1】:

    该问题导致您的服务器不接受较低的标头名称。是的,http 会将您的标题名称转换为小写,因为http 2.8。并且 dio 在它的包中使用http

    http.dart 文档中:

    除非 [preserveHeaderCase] 设置为 true,否则标题名称将转换为小写。如果两个标头名称在转换为小写时相同,则认为它们是相同的标头,具有一组值。

    如何解决? 确保您的服务器接受小写标题名称,或者您可以按照以下步骤操作:

    1. External Libraries->Dart Packages->dio-4.06->src->adapters->io_adapter.dart 中找到io_adapter.dart
    2. io_adapter.dart中找到此代码
    //Set Headers
    options.headers.forEach((k, v) {
       if (v != null) request.headers.set(k, '$v');
    });
    
    1. 添加preserveHeaderCase: true
    //Set Headers
    options.headers.forEach((k, v) {
       if (v != null) request.headers.set(k, '$v',preserveHeaderCase: true);
    });
    
    1. 清理您的项目并重建

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 2021-11-04
      • 2019-07-29
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      相关资源
      最近更新 更多