【问题标题】:React Native fetch POST variables not received on serverReact Native 获取服务器上未收到的 POST 变量
【发布时间】:2019-10-24 23:08:14
【问题描述】:

我尝试过使用 fetchaxios 以 POST 到我的服务器的不同方式,但似乎帖子正文变为空。我的初始代码是这样的。 所以与服务器的连接很好。我已将服务器配置为响应接收到的 $_POST 变量,但 $_POST 返回为空。当我在 body 上使用 JSON.stringify 时会发生这种情况。我也尝试过使用 FormData,它可以正常工作,但仅适用于 iOS。在我的 Android 设备和模拟器上,我收到 Possible Unhandled Promise: Network request failed 错误(https 和 http)。 我想让它同时在 iOS 和 Android 上运行。所以到目前为止,我只能在 iOS 上使用 formData 发送帖子。

任何适用于 Android 和 iOS 的解决方案?

import FormData from "FormData";

export const login = (emailUsername, password) => {
  var formData = new FormData();
  formData.append("emailUsername", emailUsername);
  formData.append("password", password);

  return async dispatch => {
    const response = await fetch(
      "https://myserver.net/api/app/auth.php",
      {
        method: "POST",
        headers: {
          "Content-Type": "application/json"
        },
        body: JSON.stringify({
            emailUsername:emailUsername,
            password:password
        })
      }
    );

    if (!response.ok) {
      throw new Error("Something went wrong!");
    }

    const resData = await response.json();
    console.log(resData);
  };
}; 

【问题讨论】:

  • 您是否尝试过使用 Postman 之类的工具来确保您的服务器没有配置错误并且不会以某种方式剥离 POST 正文?例如,我知道 301 重定向 https 有时会发生这种情况。
  • 我已经测试过服务器,它工作正常,服务器上没有错误。就像我说的。我已经设法在 iOS 上发送带有 body:FormData 的帖子,所以它可以工作,我知道这段代码应该可以正常工作,因为它适用于两种设备,但它没有。
  • FormData 是要走的路,除非您更喜欢更改后端,关键是您共享的 PHP 请求不会在 $_POST 中填充您的帖子数据。如果你想得到它,你必须这样做:$post_data = json_decode(file_get_contents('php://input'));。向我们展示您的 FormData 尝试,它应该也可以在 Android 上运行
  • 谢谢@bug。你的解决方案奏效了。我仍然不明白为什么在 $_POST 或 $_REQUEST 变量中没有收到它们。
  • 没问题,原因是$_POST是用来存储表单数据的,你发送的是JSON,它们是两种不同的格式,看看here看看这两个请求是怎么回事看起来像

标签: react-native post fetch


【解决方案1】:

感谢@bug,我找到了解决方案。我希望在我的服务器上接收 POST 内容到我的 $_POST 或 $_REQUEST 变量,但我不得不以这种方式获取它们。

$post_data = json_decode(file_get_contents('php://input'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2021-09-08
    • 1970-01-01
    • 2013-03-10
    相关资源
    最近更新 更多