版本3.2.3 控制层 接受提交的json字符串 获取不到值的问题

浏览:856 发布日期:2018/06/03 分类:求助交流 关键字: json
问题描述
使用PHP curl 请求API接口 其中 content-type 设置为 application/json
thinkPHP 控制层 接受请求参数 使用I('put.sign_type','0'); 返回的是默认值 0
跟踪I()方法(路径在ThinkPHP\Common\functions.php) 其中有段代码如下(在290行) case 'put'     :   
            if(is_null($_PUT)){
                 parse_str(file_get_contents('php://input'), $_PUT);
            }
            $input     =    $_PUT;        
            break;
个人理解为 当 使用 put.字段名称 执行这段代码 将获取的内容 赋值到$_PUT变量 在这个地方打印 输出input 发现读取到了内容 格式如下array (size=1)
  '{"reqtime":"1528012949","nonce":"11ddbaf3386aea1f2974eee984542152","sign_type":"md5","uid":"212"}' => string '' (length=0)
在这里继续往下执行的时候 没看到将这个字符串转换为数组的代码


如果改为这样 case 'put'     :   
            if(is_null($_PUT)){
                //parse_str(file_get_contents('php://input'), $_PUT);
                $_PUT = file_get_contents('php://input');
            }
            //$input     =    $_PUT;
            $input     =    json_decode($_PUT,1);
            var_dump($input);        
            break;
就能正常使用

查询PHP手册发现parse_str() 是这样说的 parse_str() 函数把查询字符串解析到变量中。我理解为赋值操作


我想知道 怎么接受提交方式为 application/json时 参数的值 或者有什么地方是我漏掉的


最佳答案
评论( 相关
后面还有条评论,点击查看>>