2017-04-20 64 views
1

我正在寻找这个确切的定义,但仍然找不到满意的定义。 我用的NuSOAP web服务,有一条线

$server->service($HTTP_RAW_POST_DATA); 

任何人都可以请让我知道什么是$ HTTP_RAW_POST_DATA这里的目的。 根据我的研究,它用于收集原始数据。但我不满意答案。原始发布数据的确切含义。

+0

[TFM](http://php.net/manual/en/reserved.variables.httprawpostdata.php)说得很清楚,不是吗? –

回答

0

HTTP消息由一系列标题和一个正文组成(根据标题可能需要/可选/禁止)。

对于URL http://stackoverflow.com/questions/43519007/usage-of-http-raw-post-data,身体是用来生成您正在阅读的文档的HTML。

如果您为它发出GET请求,则不存在请求主体。

如果您发布POST请求,那么会有。如果您提交表单,则会使用您可以使用enctype属性指定的格式之一对其进行编码。

通常情况下,在PHP中,当你想用这些数据来工作,你会用哪个$_POST包含内容的身体已经被解码之后。

原始的身体之前已经解码的身体

+0

这有点混乱,因为你谈论HTML,它是* response *主体,并且与这个问题无关。 – IMSoP

2

HTTP请求由两部分组成。一组标题和一个正文。

的标题包括像被请求的URL和缓存控制助手(如“我从昨天版本的这一点,只给我一个新的,如果有变化,OK?”)。

根据请求的类型,正文可能会或可能不会显示。 POST请求包含正文。

身体可以采用客户喜欢的任何格式。其中一个标题会告诉服务器格式是什么。

有一对夫妇通过HTML形式使用的格式,和PHP知道如何分析这些并把数据放到$ _ POST。

如果数据是另一种格式,如JSON,或者如果数据不符合PHP的怪癖(例如,在具有相同名称的键的末尾有[]的规则),那么您可能需要直接访问数据,这样你就可以自己解析数据。那就是原始的POST数据。

  • $_POST包含URL编码(应用程序/ WWW-URL编码),投递到你的脚本和PHP解码他们为你的变量。您在处理HTML FORM数据时使用这一个。

  • file_get_contents("php://input") - 获取原始POST数据,并且在编写API时需要使用该数据,并且需要XML/JSON/...输入,PHP无法将其解码为$ _POST。

  • $HTTP_RAW_POST_DATA - 在理论上是一样的上面,而是取决于php.ini中。并且不再提供PHP 7

+0

顶部的块引用感觉不合适。它可能会更有意义,只是提到底部的删除:“取决于php.ini” - >“取决于php.ini,并不再提供在PHP 7中” – IMSoP

+0

我很困惑 1)为什么$ _POST可以没有用过? –

+0

您无法使用POST获取JSON等数据,请自行尝试。 –

0

大部分的时间,当我们用HTTP POST请求的工作,我们正在考虑从浏览器表单提交的结果。这将以标准的方式格式化数据(“查询字符串编码”或“多部分/表格数据”),这些数据编码一组键值对。 PHP自动将此格式的任何请求解析到超全局数组$_POST中。

但是,实际的HTTP请求正文只是一段文本,在某些情况下,我们希望将其作为对待。例如,SOAP请求使用XML文档作为POST请求的主体。 $HTTP_RAW_POST_DATA可让您访问此文本 - 它是“原始”的,因为它尚未处理,它只是以字符串的形式返回给您。

值得一提的是,$HTTP_RAW_POST_DATA是进入本的方式,并在PHP的较新版本的正确方法是使用file_get_contents('php://input');,其中php://input是代表相同的原始数据的虚拟文件。

相关问题