Indice no encontrado
Hola, he estado tratando de usar tu API pero por más que trato arreglarlo me encuentro con más problemas.
Primero no sabía que había que bajarse dos proyectos tuyos además de este que debían importarse (DomHunter y DomParser)
Segundo había un error provocado por un bucle que intentaba seguir examinando a un arreglo más allá de sus límites en el archivo Tabla.php: $strTexto = $this->_limpiaStr($textos[($i+$j)]->plaintext);
Y tercero: parece que olvidaste crear un indice de "estatus" en los valores de retorno del DomHunter...
Message: Undefined index: estatus
Filename: estafeta/Estafeta.php
Line Number: 68
Hasta ahí llegué pero sería genial si me dijeras si hay una versión actualizada o el proyecto entero no sirve. Saludos y gracias.
Me puedes pasar el numero de rastreo que estas probando? Las dependencias se administran con composer no tienes que importar ni bajar nada tú como desarrollador. Las ves identificadas en
https://github.com/ivansabik/estafeta-api/blob/master/composer.json
Gracias por la pronta respuesta, pues no estoy usando composer, estoy implantándolo en el framework codeigniter y estaba usando un número falso para ver cómo captar los errores, pero como te menciono en la clase Estafeta checas el valor de $hunted['estatus'] pero echa error porque no existe tal posición.
Por cierto encontré un número de prueba (4156282680) y con ese si capto la información (después de bajarme el GoogleMapsGeocoder), parece que si funciona pero tendré que ver qué cosas necesito cambiarle a tu código, agradeceré cualquier ayuda que me brindes ;)
Te recomiendo aunque uses codeigniter pruebes manejar las dependencias con composer, de hecho el framework laravel ya todo lo hace con composer.
Lo que mencionas puede ser que necesite agregar un catch de excepción que estaría muy bien pero con números de guía reales parece sí funciona.
Podrías pegar el stacktrace de lo que hiciste para ver las líneas del $hunted['estatus']?
Ok, el objeto hunter se compone de:
hunter = array(1) { ["movimientos"]=> array(1) { [0]=> array(3) { ["fecha"]=> string(37) "No hay información disponible." ["lugar_movimiento"]=> string(37) "No hay información disponible." ["comentarios"]=> string(37) "No hay información disponible." } } }
Y el resultado de $paq->rastreo( $_POST['guia'] ); :
array(6) { ["movimientos"]=> array(1) { [0]=> array(3) { ["descripcion"]=> string(37) "No hay información disponible." ["fecha"]=> string(37) "No hay información disponible." ["id"]=> int(-1) } } ["origen"]=> array(3) { ["nombre"]=> NULL ["latitud"]=> float(23.634501) ["longitud"]=> float(-102.552784) } ["destino"]=> array(4) { ["nombre"]=> NULL ["latitud"]=> float(23.634501) ["longitud"]=> float(-102.552784) ["cp_destino"]=> NULL } ["dimensiones"]=> array(3) { ["alto"]=> string(0) "" ["largo"]=> NULL ["ancho"]=> NULL } ["firma_recibido"]=> string(0) "" ["comprobante_entrega"]=> string(103) "http://rastreo3.estafeta.com/RastreoWebInternet/consultaEnvio.do?dispatch=doComprobanteEntrega&guiaEst=" }
Yo creo que como en todos los otros campos de hunter trae la misma leyenda, solo tengo que comparar uno de esos campos en lugar del estatus, pero entonces la pregunta es ¿es necesario ese estatus, o lo estaría creando en otra parte?
Por cierto si rastreo el número de prueba que te di anteriormente si me trae sus datos, por eso sé que funciona tu código: http://www.subirimagenes.com/imagedata.php?url=http://s2.subirimagenes.com/imagen/9566225untitled.png
Ya veo, el que no funciona de arriba qué guía le pusiste o le pusiste una vacía? Entonces sólo tengo que agregar un mensaje error en la API para cuando no exista el número de guía o ya no esté vigente!
Le puse del 0 al 9 para probar jaja, y por cierto veo que si es correcto si existe el indice estatus como se nota en la imagen.
¿Si subes el archivo que genera el arreglo de respuesta podrías hacerme el favor de notificarme?
Por ahora sólo lo parcheé así:
DE
if (strpos($hunted['estatus'], 'No hay informaci') !== false) {
A
if ( !isset($hunted['estatus']) || (strpos($hunted['movimientos'][0]['comentarios'], 'No hay informaci') !== false) ) {
Checaré el método de cotización, espero y todo vaya bien, saludos.
Sí podría ser así con con un try/catch!