Arj*_*Raj 8 php rest json codeigniter
php://input在localhost中正常工作.但在服务器中它返回空.输入(请求)到我的站点是一个json(REST - 应用程序/ json类型),所以$_POST没有工作(请阅读此问题).
$ _POST与键值对类型输入一起使用,例如form-data或x-www-urlencoded
键1 =值&键2 =值&KEY3 = VALUE3
我正在使用application/json输入(在REST中).
就像{'key1':'value1','key2':'value2','key3':'value3'}
这无法使用$_POST.但使用php://input可以帮助读取该数据.
我的代码
class Webservice_Controller extends CI_Controller {
public $json_input_data;
public function __construct(){
parent::__construct();
$this->json_input_data = json_decode(file_get_contents('php://input'),TRUE);
}
public function json_input($label){
if(isset($this->json_input_data[$label])) return $this->json_input_data[$label];
else return NULL;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在另一个网络服务器上工作正常,但不是在当前的.:(
我认为我的网络服务器拒绝访问php://input.
是否还有其他方法可以在php中读取json输入?
php://input 是一个只读流,允许您从请求正文中读取原始数据。对于 POST 请求,最好使用 php://input 而不是 $HTTP_RAW_POST_DATA,因为它不依赖于特殊的 php.ini 指令。此外,对于默认情况下未填充 $HTTP_RAW_POST_DATA 的情况,它是激活always_populate_raw_post_data 的潜在内存密集型替代方案。php://input不适用于 enctype="multipart/form-data"。
查看包装纸
也试试这个,
....
public function __construct(){
parent::__construct();
if(isset($_POST))
{
var_dump(file_get_contents('php://input'));
$this->json_input_data=json_decode(file_get_contents('php://input'),TRUE);
}
else echo 'Not Post';
}
....
Run Code Online (Sandbox Code Playgroud)
还要检查allow_url_fopen.