Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

Error con el file_get_contents y REST.

PHP, HTML, CSS, JS, jQuery, etc.
shao
Observador/a
Mensajes: 1
Registrado: 30 Ago 2013, 13:27

Error con el file_get_contents y REST.

#1

Mensaje por shao »

Hola a tod@s,
os pongo una duda que a estas horas y después de llevar todo el día....no encuentro el fallo y me está volviendo loco...además es super curisoso...inexplicable...
Os comento..estoy montando un webservice sencillo en php..tipo REST.
Aquí el código del webService

Código: Seleccionar todo

<?php
    // route the request (filter input!)
    $verb = $_SERVER['REQUEST_METHOD'];
    //Formamos la palabra para saber a qué método llamar.
    $action_name = strtoupper($verb) . 'Action'; 
    //Obtenemos los parámetros (/loqsea/).
    //Puede ser que no hayan con lo cual la variable $_SERVER['PATH_INFO'] no existirá
    echo $verb;
    
    if(isset($_SERVER['PATH_INFO'])){
        require_once 'controllers.php';
        
        
        if($verb=="GET"){
            
            $url_params = explode('/',$_SERVER['PATH_INFO']);
            //Función ucfrirst devuelve la misma cadena
            //pero el primer caracter de la cadena en mayúsuculas
            //Lo hacemos para construir a partir del recurso que nos pedirán users, un objeto de la clase UsersController
            $controller_name = ucfirst($url_params[1]) . 'Controller'; 
            $controller = new $controller_name();
            $data = $controller->$action_name($url_params);
        }elseif ($verb=="POST"){
            var_dump($_POST);
            $url_params= substr($_SERVER['PATH_INFO'], 1,strlen($_SERVER['PATH_INFO'])-2) ;
            
            $controller_name = ucfirst($url_params) . 'Controller';
            $controller = new $controller_name();
            $data = $controller->$action_name();
        }
        echo json_encode($data);
    }
    
?>
y aquí el cliente:

Código: Seleccionar todo

<?php
    /*
    //Petición GET
    $response = file_get_contents("http://campusaula.dwes/users/");    
    print_r(json_decode($response));
    */
    //Peticion POST
    //Creamos la petición, es decir los nombres de las variables y sus valores.
    $postdata = http_build_query(
        array(
            'user' => 'jose'
        )
    );
    
    $opts = array('http' =>
                array(
                'method'  => 'POST',
                'header'  => 'Content-type: application/x-www-form-urlencoded',
                'content' => $postdata
        )
    );
    
    $context  = stream_context_create($opts);
    
    $result = file_get_contents('http://campusaula.dwes/users/', false, $context);
    echo $result;
?>
Pues bueno aquí viene lo curioso...si en el webservice dejo la línea
$url_params = explode('/',$_SERVER['PATH_INFO']);
fuera de todos los if...o dentro del primer if(isset($_SERVER['PATH_INFO'])){
me dice que la petición que realizo es GET, y si quito esa línea y la pongo solo dentro de si $verb=='GET' me dice que la petición es POST.
Pero claro necesito $url_params = explode('/',$_SERVER['PATH_INFO']); para saber a qué recurso quiere.....es algo super extrañoooo!!! me gustaría que alguien me ayudase estoy desesperadooooo
Gracias.
Saludos.



Avatar de Usuario
ThE KuKa
Administrador
Mensajes: 9637
Registrado: 04 Ene 2004, 19:27
Género:
Edad: 46

Re: Error con el file_get_contents y REST.

#2

Mensaje por ThE KuKa »

 ! 
Mensaje del Equipo por: ThE KuKa
Lo muevo a Recursos Webmaster

📌 Raul [ThE KuKa] en phpBB 📌
✅ Jr. Extension Validator - Jr. Styles Validator - Style Customisations - Translator - International Support Team
✅

Si te gustan mis estilos, traducciones, etc. y quieres mostrar algo de aprecio, no dudes en hacer una donación Imagen
:flag_es: phpBB España - En línea desde 2003 :heart:




Volver a “🆘 Recursos Webmaster”