Flutter/Dart http POST 重定向通过 GET 发送正文

问题描述

我正在尝试将数据POST 传输到 Google 表格网络应用。

当我POST向端点发送数据时,我会收到状态 302。如果我将数据 POST 发送到新位置,我会收到状态 405。

当我使用 Postman 时它可以工作,但我无法在 Flutter 中使用它。

Postman 收到 302,然后发送一个 GET 请求,其中包含我的 JSON 负载作为正文。这似乎违反了 GET 规范,但确实有效。

我尝试了 Flutter HTTP 包和 dio,两者都不让我通过 GET 发送正文。我尝试了带和不带 followRedirectsdio

如何在 Flutter 中通过 GET 发送正文?

解决方法

您可以使用 dio 请求代替

await dio.request(
  "/test",data: {"id": 12,"name": "xx"},options: Options(method: "GET"),);
,

使用 dio 配置您的选项小部件,如下所示以避免第一次请求的重定向:

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

GET 不用于发送数据,请参阅 https://stackoverflow.com/a/60312720/10286880

如果您想通过 POST 发送它们,您可以执行以下操作:

final res = await dio.post(
    '[YOUR ADRESS]',data: json.encode([YOUR BODY AS MAP])
  );