Saltar al contenido
Php

Conexión webservice usando CURL

php frameworks

Ejemplo de código para conectarnos con un webservice utilizando la librería curl.

Esta práctica está hecha en dos partes, en la primera parte nos conectamos y logeamos en un webservice usando curl, nos devolverá un json con las claves y las firmas para poder realizar la siguiente conexión.
En la segunda parte nos conectamos utilizando la clave y la firma, hacemos la petición de productos que nos los devolverá en un json que después convertiremos en objeto para poderlo manejar «mejor».

En esta primera parte nos conectamos y logeamos en la URL de control, que nos dará un key y una firma para poder después logearnos en el otro webservice que nos permitirá extraer los productos.

Primera parte:

 
                /********************** GET Firma  *************************************/ 
 
                $url = "http://api.---------------------------";    
                $content = ('
                {
                "user": "paquete",
                "parameters":
                {
                "email": "blablabla@gmail.com",
                "passwd": "pass111"
                }
                ,
                "session-key" : "",
                "signature": ""
                }
                ');
 
                $curl = curl_init($url);
                curl_setopt($curl, CURLOPT_HEADER, false);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
                curl_setopt($curl, CURLOPT_POST, true);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
 
                $json_response = curl_exec($curl);
                $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 
                curl_close($curl);
                $response = json_decode($json_response, true);
                $response=(object)$response;
 
                $sessionKey= $response->results['session-key'];

php frameworks

Segunda parte:

En esta parte nos conectamos utilizando la clave y la firma, hacemos la petición de productos que nos los devolverá en un json que después convertiremos en objeto para poderlo manejar «mejor».

 
                /********************** GET SKUs2 *************************************/
 
                echo $json_parameters.'</br>';
                echo $signature.'</br>';
                echo $sessionKey.'</br>';
 
 
                $json_parameters = json_encode((Array)$parameters);
                $signature = md5($json_parameters . $session_key);
 
 
                $url = "http://api.---------------------------2";    
                $content = ('
                {
                "user": "paquete",
                "parameters": [],
                "session-key" : "'.$sessionKey.'",
                "signature": "'.$signature.'"
                }
                ');
 
 
                $curl = curl_init($url);
                curl_setopt($curl, CURLOPT_HEADER, false);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
                curl_setopt($curl, CURLOPT_POST, true);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
 
                $json_response = curl_exec($curl);
                $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
                /*
                if ( $status != 201 ) {
                    die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
                }*/
 
                curl_close($curl);
                $response = json_decode($json_response, true);
                $response=(object)$response;
                $elarray=(array)$response;
 
                // Conocer el tamaño del array/objeto //
                end($elarray[results][resultado]);
                $fin = key($elarray[results][resultado]); 
 
                //Mostrar el Objeto
                printr($response);