Para probar si funcionan bien los webservices creados vamos a crear una web que los ‘consuma’. En cualquier cakephp (puede ser el mismo) crearemos un controlador ClienteController:
<?php App::uses('AppController', 'Controller'); App::uses('HttpSocket', 'Network/Http'); class ClienteController extends AppController { public $components = array('Security', 'RequestHandler'); //Aquí pondréis la url de vuestra web public $url = "http://localhost/cakeempresa/"; public function index() { } public function rest_index() { $link = $this->url . 'rest_productos.json'; $data = null; $httpSocket = new HttpSocket(); $response = $httpSocket->get($link, $data); $this->set('response_code', $response->code); $this->set('response_body', $response->body); $this->render('/Cliente/respuesta'); } public function rest_view($id) { $link = $this->url . 'rest_productos/' . $id . '.json'; $data = null; $httpSocket = new HttpSocket(); $response = $httpSocket->get($link, $data); $this->set('response_code', $response->code); $this->set('response_body', $response->body); $this->render('/Cliente/respuesta'); } public function rest_add() { $link = $this->url . "rest_productos.json"; $data = null; $httpSocket = new HttpSocket(); $data['Producto']['precio'] = 74; $data['Producto']['proveedor_id'] = 1; $data['Producto']['referencia'] = 'Extra'; $response = $httpSocket->post($link, $data); $this->set('response_code', $response->code); $this->set('response_body', $response->body); $this->render('/Cliente/respuesta'); } public function rest_edit($id) { $link = $this->url . 'rest_productos/' . $id . '.json'; $data = null; $httpSocket = new HttpSocket(); $data['Producto']['precio'] = 27; $data['Producto']['referencia'] = 'Actualizada referencia'; $response = $httpSocket->put($link, $data); $this->set('response_code', $response->code); $this->set('response_body', $response->body); $this->render('/Cliente/respuesta'); } public function rest_delete($id) { // remotely post the information to the server $link = $this->url . 'rest_productos/' . $id . '.json'; $data = null; $httpSocket = new HttpSocket(); $response = $httpSocket->delete($link, $data); $this->set('response_code', $response->code); $this->set('response_body', $response->body); $this->render('/Cliente/respuesta'); } }
Vista en View\Cliente\index.ctp:
<h1>Acciones</h1> <p> Escoja <ul> <li><?php echo $this->Html->link('Lista Productos', array('controller' => 'cliente', 'action' => 'rest_index')); ?></li><li><?php echo $this->Html->link('Ver producto con ID 1', array('controller' => 'cliente', 'action' => 'rest_view', 1)); ?></li> <li><?php echo $this->Html->link('Añadir producto', array('controller' => 'cliente', 'action' => 'rest_add')); ?></li> <li><?php echo $this->Html->link('Actualizar producto 2', array('controller' => 'cliente', 'action' => 'rest_edit', 2)); ?></li> <li><?php echo $this->Html->link('Borrar producto 3', array('controller' => 'cliente', 'action' => 'rest_delete', 3)); ?></li></ul> </p>
Vista en View\Cliente\respuesta.ctp:
<h1>Código respuesta</h1> <p><?php echo $response_code; ?></p> <h1>Cuerpo respuesta</h1> <p><?php echo $response_body; ?></p>