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);