内容('php:// input')返回JSON消息的字符串

我正在尝试阅读我的PHP应用程序中的JSON消息,这是我的PHP代码:

$json = file_get_contents('php://input');
$obj = json_decode($json, TRUE);
echo $obj->{'S3URL'};

当我这样做时,我收到以下错误:

Trying to get property of non-object in setImage.php on line 25 (line 25 is the echo $obj->{'S3URL'}; line)

这是对页面请求的请求主体:

Request Url: http://localhost:8888/setImage.php
Request Method: POST
Status Code: 200
Params: {
   "S3URL": "http://url.com"
}

这是请求标题:

Accept: application/json
Content-Type: application/json
Connection: keep-alive
Origin: chrome-extension: //rest-console-id
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML,

但是,如果我反出$json变量,我得到以下内容:

S3URL=http%3A%2F%2Furl.com

所以它看起来像file_get_contents('php://input'); 正在以字符串的形式读取它,而不是以JSON的形式读取,这会使分析更加困难。

任何想法为什么它不会被作为JSON返回,或者我怎样才能将它作为JSON返回?


你使用json_decode是创建一个关联数组,而不是一个对象。 你可以把它看作一个数组,而不是一个对象。 如果你想要一个对象,请使用它,而不是:

$obj = json_decode($json);

查看关于json_decode()的第二个参数的文档:

assoc当TRUE时,返回的对象将被转换为关联数组。

同样,正如Johannes H.在评论中指出的那样, echo $json;的输出echo $json; 表明你实际上并没有收到JSON,所以你也需要解决这个问题。 你问为什么它不是JSON; 没有看到你如何要求这个脚本,这是不可能的。


问题可能在于php://输入(是一个只读流,允许您从请求主体读取原始数据)。 改变一些设置从php.ini,尝试使“allow_url_fopen”上。


$ obj = json_decode($ json);

只要删除真实

链接地址: http://www.djcxy.com/p/19145.html

上一篇: contents('php://input') returning string for JSON message

下一篇: fastcall: What happens with the stack?