我无法从IOS obj-c客户端将JSON编码数据发布到我的CI控制器。我相信我的问题与提到here的问题相同。但我在CodeIgniter网站上找不到关于'request'对象的任何文档。如何查看/解析http请求正文中的数据?
$ this-> request-> body ??
谢谢!
答案 0 :(得分:18)
我能够通过使用
来实现这一目标$jsonArray = json_decode(file_get_contents('php://input'),true);
以上内容将从输入请求中读取请求体,然后将JSON解码为关联数组。
如果CI有一个用于读取输入流http正文数据的包装器,我仍然会对重构此代码感兴趣。这个框架相当新颖。
答案 1 :(得分:2)
尝试使用
$this->input->raw_input_stream
答案 2 :(得分:2)
要继续使用CI纯模式,请执行以下操作:
$_POST = json_decode($this->input->raw_input_stream, true);
然后
$value = $this->input->post($fieldName);
答案 3 :(得分:0)
该文章中提到的“请求”对象属于一个名为“ codeigniter-restserver”的程序包。您可以找到更多信息here。
可接受的答案是可行的答案,但是CodeIgniter确实提供了$this->input->raw_input_stream
,可为您提供所需的确切信息。因此,以CodeIgniter方式编写代码,您应该使用:
$jsonArray = json_decode($this->input->raw_input_stream, true);
您会注意到raw_input_stream
的源代码也使用了file_get_contents('php://input')
方法。
答案 4 :(得分:0)
如果您使用的是Codeigniter版本> = 4,则可以尝试以下操作:
$requestBody = json_decode($this->request->getBody());
$user = $requestBody->user;
如果您使用的是版本3,则可以尝试
$this->input->post('user', TRUE);
答案 5 :(得分:-3)
从CI 2.1的CodeIgniter文档中,我看到Input类提供了以下调用
$this->input->post(NULL, TRUE); // returns all POST items with XSS filter
这样您就可以确保请求正文是XSS过滤的