无法在Flutter中的dio中添加post方法的标头

时间:2019-11-07 14:33:26

标签: flutter dio

我正在使用 dio:^ 3.0.4 。任何人都可以帮助我找到添加标头的解决方案。这是我的代码:

FormData formData = 
    new FormData.fromMap({"files": await MultipartFile.fromFile(filePath.path, filename: 'photo')
          });

  Response response = await dio.post("***********",
    data: formData,
    onSendProgress: (int sent, int total) {
      print("$sent $total");
    },
    options: Options(
      headers: {
        "authorization": "*************"
      },
      followRedirects: false,
      validateStatus: (status) {
        return status <= 500;
      }
    ),
  );

当我打印标题时。

  

print(response.headers);

结果:

  

flutter:内容类型:text / html; charset = UTF-8连接:关闭   缓存控制:无缓存,私有传输编码:分块日期:周四,   2019年11月7日14:29:02 GMT服务器:Apache / 2.4.18

5 个答案:

答案 0 :(得分:1)

如果我们通过小写键值,

例如,

Dio dio = new Dio();
dio.options.headers['content-Type'] = 'application/json';
dio.options.headers["authorization"] = "token ${token}";
response = await dio.post(url, data: data);                                                      

确保您以小写的形式写密钥,对我来说这是有效的。

答案 1 :(得分:1)

尝试不同的方法将参数传递给标头后,这对我来说很有用

    Dio dio = new Dio();
    dio.options.contentType = ContentType("application","x-www-form-urlencoded");
    dio.options.headers[HttpHeaders.authorizationHeader] ="Basic $clientCredentials";

答案 2 :(得分:1)

这可能是错误,因为我无法将其设置为小写的 content-type

Content-Type 有效。

options.headers = {'Content-Type': 'application/json', ...request.headers};

请随意参考https://github.com/flutterchina/dio/issues/1045

答案 3 :(得分:0)

有些类似的问题没有答案
但是以下对我有用的工作
请使用以下代码段设置标头属性

  Dio dio = new Dio();
  dio.options.headers["Authorization"] = "Bearer ${token}";
  response = await dio.post(url, data: data);

答案 4 :(得分:0)

dio.options.contentType = ContentType("application","x-www-form-urlencoded") as String;