1

这是我第一次在 iOS 中使用 Web 服务。REST 是我的第一选择,我使用代码点火器来形成它。

我有我的控制器:

require APPPATH.'/libraries/REST_Controller.php';

class Sample extends REST_Controller
{

    function example_get()
    {
        $this->load->helper('arh');
        $this->load->model('users');

        $users_array = array();
        $users = $this->users->get_all_users();

        foreach($users as $user){
            $new_array = array( 
                                'id'=>$user->id , 
                                'name'=>$user->name,
                                'age'=>$user->age,
                              );
            array_push( $users_array, $new_array);
        }

        $data['users'] = $users_array;      
        if($data)
        {
            $this->response($data, 200);
        }
    }

    function user_put()
    {  
        $this->load->model('users');
        $this->users->insertAUser();

        $message = array('message' => 'ADDED!');
        $this->response($message, 200);

    } 

}

,使用我的网络浏览器,访问该 URLhttp://localhost:8888/restApi/index.php/sample/example/format/json确实可以正常工作并给出以下输出:

{"users":[{"id":"1","name":"Porcopio","age":"99"},{"id":"2","name":"Name1","age":"24"},{"id":"3","name":"Porcopio","age":"99"},{"id":"4","name":"Porcopio","age":"99"},{"id":"5","name":"Luna","age":"99"}]}

,这给了我在我的应用程序中使用 RestKit 的 RKRequest 的出色输出。

问题出在 put 方法上。这个网址:

http://localhost:8888/restApi/index.php/sample/user

总是给我这样的错误:

此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。

<xml>
<status/>
<error>Unknown method.</error>

这是我的用户模型

<?php

    class Users extends CI_Model {
        function __construct()
        {
            parent::__construct();
        }

        function get_all_users()
        {
            $this->load->database();
            $query = $this->db->get('users');
            return $query->result();
        }

        function insertAUser(){
            $this->load->database();
            $data = array('name'=> "Sample Name", 'age'=>"99");
            $this->db->insert('users', $data);
        }
    }
?>

我的 _put 方法的解决方法是什么,为什么我不插入任何东西?谢谢大家!

4

2 回答 2

1

除非您将方法设置为PUTor POST,否则您的 Web 服务器不会这样对待它。当您在浏览器栏中输入 URL 时,几乎总是一个 GET 请求。您可以尝试使用curllike

curl -X POST -d @filename http://your.url.path/whatever

另一个链接是:https ://superuser.com/questions/149329/what-is-the-curl-command-line-syntax-to-do-a-post-request

因此,您应该能够类似地执行 PUT(也许没有数据)。不太确定这是否应该被iOS标记:)

于 2012-04-12T14:29:57.233 回答
0

我在rest Client中使用Firefox插件遇到了这个问题。我只需要指出标题和正文即可使 put 和 post 工作。

于 2012-06-29T04:33:56.003 回答