使用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时 参数的值 或者有什么地方是我漏掉的
最佳答案
