Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确设置post请求的正文格式?_Php_Jquery_Json_Rest_Post - Fatal编程技术网

Php 如何正确设置post请求的正文格式?

Php 如何正确设置post请求的正文格式?,php,jquery,json,rest,post,Php,Jquery,Json,Rest,Post,我正在使用一个名为restclient的firefoxpluing来模拟post请求。它似乎没有拾取任何post数据,但不确定我是否正确设置了格式 使用标题:内容类型:application/json 正文:{“id”:1234} 但不是go,它没有在我的php中拾取id参数,是否需要设置一些特殊格式?php不会将JSON正文自动解析到$\u POST超全局。只有application/x-www-form-urlencoded和multipart/form dataPOST body才会出现这

我正在使用一个名为restclient的firefoxpluing来模拟post请求。它似乎没有拾取任何post数据,但不确定我是否正确设置了格式

使用标题:内容类型:application/json 正文:{“id”:1234}


但不是go,它没有在我的php中拾取id参数,是否需要设置一些特殊格式?

php不会将JSON正文自动解析到
$\u POST
超全局。只有
application/x-www-form-urlencoded
multipart/form data
POST body才会出现这种情况。这就是说,您可以自己解析正文-您可以通过访问原始的POST正文。

好的,让它工作起来,下面是所需要的

两种内容类型:

Content-Type: application/json
Content-Type: application/x-www-form-urlencoded
然后在body中设置参数,如下所示:

param1=value1&param2=value2

谢谢大家的帮助。

似乎是正确的。问题可能在于您是如何使用这个插件的。我正在用php代码打印($\u POST),但结果却是空的。我还将方法设置为“POST”,以防有人怀疑。查看此帖子:好的,我添加了内容类型:application/x-www-form-urlencoded,仍然不行,我是否遗漏了其他内容?我只是想模拟一个POST请求。是的。您的实际正文内容是JSON,仅向服务器谎报您发送的内容是不够的。您要么必须实际编码正文,要么需要在后端显式处理JSON。这可能可行,但实际上并不正确。您的内容不能有多种类型。它只是一种类型,在本例中是
内容类型:application/x-www-form-urlencoded
。JSON看起来有点像
{'key1':'value1','key2':'value2','key3':'value3'}
,如果这样,则必须将标题设置为
内容类型:application/JSON
。显然,现在您的服务器只选择最后一个头。但是,如果您省略了误导性的一个,那么这个示例也应该有效,因为它不是JSON。因此,当使用url编码的键值对(如
param1=value1¶m2=value2
)时,正确的内容类型是
application/x-www-form-urlencoded
,您可以通过服务器端的
$\u POST
-数组访问它。如果您有像
{'key1':'value1','key2':'value2','key3':'value3'}
这样的JSON数据,请将内容类型设置为
application/JSON
,您可以在服务器端使用
$data\u array=JSON\u decode(file\get\u contents('code>)将数据转换为数组php://input",对),