【问题标题】:PHP API Content-Type: application/json. Response empty dataPHP API 内容类型:应用程序/json。响应空数据
【发布时间】:2014-06-14 05:48:39
【问题描述】:

适用于:

  • 从 Android 平台发送到 PHP(网络服务)
  • 使用此Content-Type: application/x-www-form-urlencoded 发送的请求标头

不适用于:

  • 使用Content-Type: application/json 发送的请求标头。没有收到任何数据

API 在同一平台上工作,但不在跨平台上:

  • 网络到网络工作
  • Android 到网络无法正常工作

在 PHP 中在顶部添加了两个标题:

header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json');

【问题讨论】:

    标签: php android json web-services api


    【解决方案1】:

    如果你比较这两种内容类型 application/x-www-form-urlencoded 和 application/json 在“第一个适用于 PHP,第二个不适用”,那么你可能期望数据神奇地出现在 $ 中_POST 在这两种情况下。

    这不会发生。 PHP 仅在给出第一个内容类型时才填充 $_POST(或者,application/multipart-form-data 可用于所有内容,尤其是文件上传)。

    如果你想使用 application/json,那么你必须自己在 PHP 端实现一个解析器,它读取 HTTP 请求正文并根据你的喜好进行解析。

    【讨论】:

      【解决方案2】:

      在日志搜索后我找到了我的答案.. 我们需要这个函数来获得来自跨平台(android 到 web)的 $_POST 响应

      file_get_contents('php://input')
      

      或者我们也可以使用这个函数来获取 $_POST 响应

      $HTTP_RAW_POST_DATA
      

      这里是获取响应的完整函数。

      $data = urldecode(file_get_contents('php://input'));
      echo $data;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-06
        • 2015-03-03
        • 2015-04-21
        • 2018-09-05
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        • 2017-11-17
        相关资源
        最近更新 更多