如何正确格式化发布请求的正文?

Posted

技术标签:

【中文标题】如何正确格式化发布请求的正文?【英文标题】:How to properly format body for post request? 【发布时间】:2012-06-24 03:59:35 【问题描述】:

我正在使用名为 restclient 的 firefox pluing 来模拟发布请求。它似乎没有获取任何帖子数据,但不确定我的格式是否正确。

使用标头:Content-Type: application/json 和正文:“id”:1234

但不去,它没有在我的php中获取id参数,我需要设置一些特殊的格式吗?

【问题讨论】:

似乎是正确的。问题可能在于您如何使用此插件 好吧,我正在我的 php 代码中执行 print_r($_POST) 并且它是空的。如果有人想知道,我还将方法设置为“POST”。 查看这篇文章:***.com/questions/8893574/php-php-input-vs-post/… 【参考方案1】:

好的,可以了,这是需要的

两种内容类型:

Content-Type: application/json
Content-Type: application/x-www-form-urlencoded

然后在正文中设置您的参数:

param1=value1&param2=value2

感谢大家的帮助。

【讨论】:

这可能有效,但并不真正正确。您的内容不能有多种类型。这只是一种类型,在这种情况下是Content-Type: application/x-www-form-urlencoded。 JSON 看起来像'key1':'value1','key2':'value2','key3':'value3',如果你有,你必须将标题设置为Content-Type: application/json。显然,现在您的服务器只需选择最后一个标头。但是,如果您省略误导性的示例,此示例也应该有效,因为它不是 JSON。 因此,当使用像param1=value1&param2=value2 这样的url 编码键值对时,正确的Content-Type 是application/x-www-form-urlencoded,您可以通过服务器端的$_POST-array 访问它.如果你有 'key1':'value1','key2':'value2','key3':'value3' 这样的 JSON 数据,请将 content-type 设置为 application/json,然后你可以在服务器端使用 $data_array = json_decode(file_get_contents('php://input'), true); 将数据转换为数组【参考方案2】:

PHP 不会将 JSON 正文自动解析为 $_POST 超全局。这只发生在application/x-www-form-urlencodedmultipart/form-data POST 正文中。也就是说,您可以自己解析正文 - 您可以通过 php://input pseudo-stream 访问原始 POST 正文。

【讨论】:

好的,我已经添加了 Content-Type:application/x-www-form-urlencoded,还是不行,我还缺少什么吗?我只是想模拟一个 POST 请求。 是的。您的实际正文内容是 JSON,仅对服务器发送的内容撒谎是不够的。您要么必须在 application/x-www-form-urlencoded format 中实际编码正文,要么需要在后端显式处理 JSON。

以上是关于如何正确格式化发布请求的正文?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Postman 以 JSON 格式在请求正文中发送对象数组?

如何使用 C# 在 POST 请求中发送 json 请求正文数据

JSON 请求正文 - 客观 c 格式

yaml 格式作为请求帖子正文

Alamofire 帖子正文格式不正确

我将如何正确格式化此 SQL 请求? [复制]