如何从 URL 下载 .pdf 文件 POST 请求在 Flutter 中有 body 和 headers?

How to download a .pdf file from an URL with POST Request having a body and headers in Flutter?

我正在尝试从 URL 下载一个 .pdf 文件,在 Flutter 中有 POST 请求 body。 我正在使用 Dio 插件进行网络调用。

这是我到目前为止尝试做的事情:

Dio dio = Dio();
late Response response;


Future<APIResponse> downloadFile({token}) async {
    await dio
        .post('https://www.example.com/sample/download',
            data: {
              {"month": "January", "year": "2022"}
            },
            options: Options(
              headers: {
                'Authorization': 'Bearer $token',
              },
            ))
        .then((value) {
      if (value.statusCode == 200) {
        response = value;
        // here I need the file to be downloaded
        // specific folder would be /downloads folder in Internal Storage
      }
    });
    return APIResponse.fromJson(response.data);
  }

但据我检查,Dio 没有 POST 带有下载选项的方法。

这是 Dio 文档中给出的内容:

下载文件:

response = await dio.download('https://www.google.com/', './xx.html');

但是这里不能添加请求body或者headers.

我还需要将文件下载到设备中的特定文件夹,例如内部存储中的 /downloads 文件夹。 下载成功后,我们可以直接从该屏幕打开文件。

如何进行?我是 Flutter 的新手。

您可以使用 options 参数。您还可以添加 cookie 或其他参数。

response = await dio.download(
  'https://www.google.com/', './xx.html',
  options: Options(
    headers: {'cookie': 'any_cookie'}, 
    method: 'POST',
  ),
);