Foros del Web » Programando para Internet » PHP »

Comprobar la respuesta de la api

Estas en el tema de Comprobar la respuesta de la api en el foro de PHP en Foros del Web. Buenas tardes amigos, espero que me podeis ayudar con este tema porque yo no lo he conseguido. Tengo una api y necesito hacer un if ...
  #1 (permalink)  
Antiguo 31/10/2011, 12:00
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 5 meses
Puntos: 20
Comprobar la respuesta de la api

Buenas tardes amigos, espero que me podeis ayudar con este tema porque yo no lo he conseguido.

Tengo una api y necesito hacer un if con que si la respuesta de un apartado de la api es
Código PHP:
<error>
<
message>No Videos found!</message>
<
code>####</code>
</error
Devolver un cierto mensaje (en este caso sera un show_error() en codeginiter).
Como podria conseguirlo, lo intente con un preg_match pero no lo consegui.
  #2 (permalink)  
Antiguo 31/10/2011, 12:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Comprobar la respuesta de la api

Es mejor que muestres como lo haces parta ayudarte a resolverlo, ¿te parece bien?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 31/10/2011, 12:27
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 5 meses
Puntos: 20
Respuesta: Comprobar la respuesta de la api

Estoy intentado hacerlo de esta manera:

Código PHP:
if (preg_match("#<error><message>(.*)</message><code>(.*)</code></error>#i"$videosJson));
            {
                
show_error("No videos found");
            } 
  #4 (permalink)  
Antiguo 31/10/2011, 12:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Comprobar la respuesta de la api

Pero por supuesto que no va a funcionar de esa manera, pues entre <error> y <message> hay un salto de linea y en tu expresión no informas de ello.

Las expresiones regulares son fáciles de escribir si tomamos en cuenta todos los espacios en blanco, incluyendo los saltos de linea. Para volverlos opcionales, o en caso de que sean bastantes debes usar \s* en tu expresión.
Cita:
<error>\s*<message>(.*)</message>\s*<code>(.*)</code>\s*</error>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 31/10/2011, 12:43
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 5 meses
Puntos: 20
Respuesta: Comprobar la respuesta de la api

Gracias pateketrueke, sinceramente no se que haria yo sin la sabiduria/ayuda vuestra de verdad Gracias. Aun asi ahora dandole un view source me encontre con esto

Código PHP:
<?xml version="1.0"  standalone="yes"?>
    <error>
        <message>No Videos found!</message>
        <code>2001</code>
    </error>
e intente esto
Código PHP:
if (preg_match('#<?xml version="1.0"  standalone="yes"?>\s*<error>\s*<message>(.*)</message>\s*<code>(.*)</code>\s*</error>#i', $videosJson));
Pero sin exito. La verdad es que tengo que ponerme con la regular expressions para aprenderlas de una vez.
  #6 (permalink)  
Antiguo 31/10/2011, 12:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Comprobar la respuesta de la api

Mira, una clave de las expresiones es que no debes ser 100% intimo con ellas al momento de formularlas.

Reflexiona y responde, ¿que porcentaje de la salida es suficiente para extraer y determinar el resultado de la API?

Según yo no es necesario expandir la expresión para que cubra TODA la salida que obtienes, con que solo especifiques lo mínimo te ahorras trabajo y consigues lo mismo.

Yo lo haría así, mas simple:
Código PHP:
<?php

$salida 
'<?xml version="1.0"  standalone="yes"?>
    <error>
        <message>No Videos found!</message>
        <code>2001</code>
    </error>'
;

if (
strpos($salida'<error>'))
{
  
preg_match('/<message>(.+?)<\/message>/'$salida$match);
  die(
"Error: $match[1]");
}
Y si, debes afinar tu manejo de expresiones regulares, pero también debes mejor tu capacidad para ver las cosas.

Como puedes ver, mi ejemplo hace lo que necesitas sin tener una expresión que abarque toda la salida.

El caso es que debes ser mas sencilla tu expresión, mientras mas sencilla mejor.

Siempre.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 31/10/2011, 13:00
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 5 meses
Puntos: 20
Respuesta: Comprobar la respuesta de la api

Gracias pateketrueke, considero que todavia me falta mucho por aprender y mucho por afinar mis "skills" como por ejemplo: capacidad de ver las cosas de distintas maneras (aunque voy bastante bien con este tema, pero me cuesta a la hora como lo de mas arriba)

Lo probare y te avisare para que sepas como va, aunque no lo dudo ni lo mas minimo.

Gracias de nuevo,
:)
  #8 (permalink)  
Antiguo 31/10/2011, 18:39
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 5 meses
Puntos: 20
Respuesta: Comprobar la respuesta de la api

Perfecta la solucion pateketrueke. La estoy usando de esta manera

Código:
if (strpos($videosJson, '<error>'))
            {
                preg_match('/<message>(.+?)<\/message>/', $videosJson, $match);
                show_error("<strong>$query</strong>: $match[1]");
            }

Etiquetas: api, respuesta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:24.