Nueva pregunta

Pregunta:

Fecha: 04-09-2018 02:18:01 (En Español)

GET Con Curl[No resuelta]

Hola quiero hacer una consulta ya que de la manera que lo hago en mercadolibre no me funciona, quiero consultar con PHP mediante CURL. Tampoco puedo con Restclient de Firefox. Esto es el esquema que dan para consultar.

curl -X GET \
'https://api.enviopack.com/cotizar/costo?access_token=[TU_ACCESS_TOKEN]
&provincia=C
&codigo_postal=1405
&peso=1.5
&paquetes=20x3x5
&direccion_envio=22'

El ACCESS TOKEN ya lo obtengo pero al pasar los parámetros me da error.

Gracias
Etiquetas: JSON - PHP - PHP JSON Votos: 0 - Respuestas: 6 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 04-09-2018 09:39:18 Obviamente para que te ayudemos deberías indicar el error que te da y el código php que usas.   Votos: 0 - Link respuesta
     
  • Fecha: 04-09-2018 15:03:04 Hola adjunto el codigo. No me trae nada solo me muestra [].
    
    <?php
    $Acces_Token="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXUyJ9.eyJleHAiOjE1MzYxMTk4NDMsInVzZXJuYW1lIjoiNjQyMmZkNDFmMzI3ZjcyNGU4NTlkNTk0N2U0YTY5MzM0MzM4Njk5YiIsImlhdCI6IjE1MzYxMDU0NDMifQ.dwfno00ggDjyv2laNTTbxKWWm80VGoKKf1B6NWFuq8sXu5q0BqJRGM0rHt6wjX_GZCZX4WHydU7ydYBX3xJQy6jqoclDWaWD9I6F0Bq8IUA-lKNSPjBLDnlGo5diDNpbgJLupo6zRax_Y-uLOqml6TVNS830LUCj0lgJsvA-T3U_HBuyyHchkl1zHOMM1wuYKHpdxhwHYncDoyvJlHaVN5AAoMmGLbeSm1ORXYDZBVKZniHiYfIG5O3mtOgK2a5LfvwlpEby9m3LKsdRotmI-2IhWjPuovXInFrosiIsw-_Z1v_wc_REY-nQd_9vOgp4OiS0OMHwpoGhJnRW1jZpquLOxe6ssekGKVH-_wWzelcoBV7Qd3QMDnXe4I3H0amW6FT43NvaK1GoY54PrcWN-ZyDm2CzXxQ7SOEORNMF-_7uWiHdlNknog6hhiQ-DhMV166LOWvQCB_5C_s0ANVG36QCKxc2v9H-fL0uP9DSVaRwQ8ZZ-VTxRRSlZJuFxU56WChfjx6iy2zLNwxKMQa1yyHKCnAH4j3etcMt20AsNcb22UEg_4ctTtJOB5qYuOMZUicOUIIL2Q3TFOHAOtSY6-4VtYzk2wpbzR9XWC10DvNejLQ2kyouVjGSgG1b_gVJw7vgzcyPDKB1oBOmhhXy0udylJWN3ShtinxilSf1Quc";
    
    $Provincia="C";
    $CP="1754";
    $peso="1.5";
    $paquetes="20x3x5";
    $direccion_envio="22";
    
    $ch = curl_init(); 
    // definimos la URL a la que hacemos la petición
    curl_setopt($ch, CURLOPT_URL,"https://api.enviopack.com/cotizar/costo?access_token=".$Acces_Token);
    
    
    // definimos cada uno de los parámetros
    curl_setopt($ch, CURLOPT_POSTFIELDS, "provincia=".$Provincia."&codigo_postal=".$CP."&peso=".$peso."&paquetes=".$paquetes."&direccion_envio=".$direccion_envio);
    // recibimos la respuesta y la guardamos en una variable
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); 
    $respuesta = curl_exec ($ch);
    // cerramos la sesión cURL
    curl_close ($ch);
    
    //mostramos TODOS CON LA LINEA SIGUIENTE
    print_r($respuesta).'<br>';
    echo '<br>'.'<br>';
    
    // CON ESTO TRAEMOS LOS DATOS QUE QUEREMOS
    //$getData = json_decode($respuesta,true);
    
    // CON ESTO TRAEMOS LOS DATOS QUE QUEREMOS
    
    ?>
    
    
      Votos: 0 - Link respuesta
     
  • Fecha: 04-09-2018 19:31:24 No muestra el error, pero ha de ser por como agregas los campos adickionales, prueba de esta manera a ver:

    
    $Acces_Token="AQUI EL TOKEN";
    
    $data = array("provincia" => "C","codigo_postal"=>"1754","peso"=>"1.5","paquetes"=>"20x3x5","direccion_envio"=>"22");
    $ch = curl_init("https://api.enviopack.com/cotizar/costo?access_token=".$Acces_Token);
      
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
    curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
    $respuesta = curl_exec($ch);
    curl_close($ch);
    
    


    también puesdes configurarlo de esta manera:

    $Acces_Token="Tu TOKEN";
    
            $data = array("provincia" => "C","codigo_postal"=>"1754","peso"=>"1.5","paquetes"=>"20x3x5","direccion_envio"=>"22");
            $ch = curl_init("https://api.enviopack.com/cotizar/costo?access_token=".$Acces_Token);
            $options = array( 
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_HTTPHEADER => array('accept: application/json'), 
                    CURLOPT_SSL_VERIFYPEER => false,
                    CURLOPT_POSTFIELDS => http_build_query($data),
                    CURLOPT_CUSTOMREQUEST   =>  "GET"
            ); 
            curl_setopt_array( $ch, $options ); 
        
            $respuesta = curl_exec($ch);
            curl_close($ch);
            var_dump($respuesta);
    


    Me da esta respuesta porque imagino no es un token válido:
    string(104) "{"code":401,"message":"Acceso denegado. El access_token es inv\u00e1lido o esta vencido.","errors":null}"

    prueba a ver como te va
      Votos: 0 - Link respuesta
     
  • Fecha: 05-09-2018 01:20:34 Hola Carlos gracias por responder, con la primera opción da el mismo resultado [].

    COn la segunda Opción da como resultado:

    string(2) "[]" []

    acces_Token =eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXUyJ9.eyJleHAiOjE1MzYxNTY3ODUsInVzZXJuYW1lIjoiNjQyMmZkNDFmMzI3ZjcyNGU4NTlkNTk0N2U0YTY5MzM0MzM4Njk5YiIsImlhdCI6IjE1MzYxNDIzODUifQ.AwA8FRmsSKy58SfKTeUdkLxpdg149Tlx8PlRt2jLq5eK989Uou_QHoWKW2PUQW6MseQNVOArVERKkKy5fqGBZWFf3o3er512RT4LNOc_LjffY27eafFalwedMAN5RXUJxgYaUbTUgFXEdM2alhIPY0h4MIJlDjYT7Y05ttMCQ7Vk3gYU0Ch7Fus7bkod2bdLmY7SgC6bXBiH02Mig0oVfBuMw-jJ6q2TOgW0ho3xIJfJkhS5Oy91HyXOa15qSXYefo9ns2Gd7IXzWbb6qe9fcuX00mcz_RVN23HAYP86Bc-sf0V9tkyeBToD9KB5zS7L7TP_h4d2mrtuMd0WX2RVgTj2PVtsBZp35d6UztF9FA3xFDz6lKwWBlJ3RcIUrXTiONzS4HVJlhNrpnTcmbmvB8n5TRxLUMDYxzvFzuHJtxetabrnfkrDzaOOKiNMvZJd-QGBhBMw8ERIpp8Jeo3_jB8TS-paU30JApXmxENXH48oabx0-tJPzEngBXYZhbs_3Hqw9jANuQTuutby7KFxCPUNMGFH3QlingbUiDPeG1kRCVm_CLzOZ9g8VqLwBaIek_jj1TrtnIx3BmKeJkaCflFoXyob08bT1qzC-qBiemix67F-huJYLD73W7YYz8XfP8dvo-8me11ysIr7yuBJ-J6q34dtsAdjplvCwjErx8Q

    Este es el nuevo Acces Token solo que dura 4 horas. La verdad técnicamente no se lo que ocurre.

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 06-09-2018 14:54:21 Primero deberias probar con POSTMan a ver si todo funciona,

    despues deberias hacer peticiones con algo como https://requests.ryanmccue.info/ por que algunos servers no aceptan peticiones curl desde PHP.
      Votos: 0 - Link respuesta
     
  • Fecha: 07-09-2018 03:10:19 Me da que "técnicamente" lo que ocurre es que debes definir el método de envío, get o post, que es distinto de CURLOPT_CUSTOMREQUEST, y el token debe ir en la query string, no en la $url.

    $ch = curl_init($url);
    curl_setopt ($ch, CURLOPT_POST, 1); // Método POST
    curl_setopt ($ch, CURLOPT_POSTFIELDS, 'variable1=valor1&...');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $respuesta = curl_exec ($ch);

    Asimismo revisa que la query string esté bien construida, y sobretodo lo más básico: la documentación de esa API.
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com