Php 如何正确设置post请求的正文格式?
我正在使用一个名为restclient的firefoxpluing来模拟post请求。它似乎没有拾取任何post数据,但不确定我是否正确设置了格式 使用标题:内容类型:application/json 正文:{“id”:1234}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才会出现这
但不是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¶m2=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",对),代码>