【问题标题】:Are httpPost.setHeader("Accept", "application/json") and httpPost.setHeader("Content-type", "application/json") required?需要 httpPost.setHeader("Accept", "application/json") 和 httpPost.setHeader("Content-type", "application/json") 吗?
【发布时间】:2017-01-15 18:04:37
【问题描述】:

我正在从我的 Android 应用程序向服务器发送 JSON 数据,我在人们添加的示例中看到:

httpPost.setHeader("Content-type", "application/json");
httpPost.setHeader("Accept", "application/json");

我尝试在没有它的情况下发送 JSON,但我在服务器上正常接收 JSON,使用:

$jsonReceived = file_get_contents("php://input");

标题有什么用?

【问题讨论】:

    标签: java php android json


    【解决方案1】:

    这取决于服务器。一些服务器需要这些,因为它们会向服务器提供有关您提供的内容以及您想要的回报的信息。其他服务器可能会忽略这些,只是做出假设。

    无论如何:

    Accept 标头用于告诉服务器您会满意哪种响应。在这种情况下,您是在告诉服务器您想要 JSON 输出,而不是说文本、XML 或二进制垃圾。

    Content-Type 标头用于通知服务器您正在发送什么。在这种情况下,您是在告诉服务器您正在发送 JSON 数据,而不是其他内容。

    这些标头用于支持不同格式的服务器,例如 XML、二进制、文本、图像等。

    一个好的客户端实现总是提供这些标头,而好的服务器会拒绝任何他们不理解的东西(包括没有标头的情况)。

    如果您仍然不清楚,请阅读 HTTP 规范。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-25
      • 2020-04-23
      • 2020-11-14
      • 2015-10-20
      • 2018-03-17
      • 2015-08-30
      • 2013-04-15
      • 1970-01-01
      相关资源
      最近更新 更多