Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Obtener un xml remoto

Estas en el tema de Obtener un xml remoto en el foro de PHP en Foros del Web. Buenas a todos. Tengo un pequeño problema. Necesito acceder con php a un archivo xml que se genera dinámicamente en el servidor. La url depende ...
  #1 (permalink)  
Antiguo 08/08/2013, 15:44
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Obtener un xml remoto

Buenas a todos. Tengo un pequeño problema. Necesito acceder con php a un archivo xml que se genera dinámicamente en el servidor. La url depende de algunos parámetros, pero es más o menos así
https://www.XXX.es/ ... &enlace=3&psw=YYY

Genero la url dinámicamente y la almaceno en $url. La instrucción
$xml = simplexml_load_file ($url);

Me devuelve este warning:
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "https://www.XXX.es/ ... &enlace=3&psw=YYY" in C:\AppServ\www\prueba.php on line 31

Sin embargo, si introduzco la url en el navegador, aparece el archivo xml.
¿Qué estoy haciendo mal?
  #2 (permalink)  
Antiguo 08/08/2013, 15:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener un xml remoto

¿Ya consultaste en el manual de SimpleXML por si hay una restricción acerca de las URLs que puede leer?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/08/2013, 15:52
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Obtener un xml remoto

Si es un archivo externo, no creo que sea posible que lo obtengas de esa forma, podrias usar CURL de php.
  #4 (permalink)  
Antiguo 08/08/2013, 16:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener un xml remoto

Cita:
Iniciado por Erick_MD9 Ver Mensaje
Si es un archivo externo, no creo que sea posible que lo obtengas de esa forma, podrias usar CURL de php.
De hecho si es posible.

Pero bueno, como veo que nadie va a leer el manual hago cita de lo que ahí se indica:

Cita:
Iniciado por http://php.net/manual/es/function.simplexml-load-file.php
filename

Ruta al fichero XML

Nota:

Libxml 2 no escapa la URI, así que si es necesario pasar, por ejemplo b&c, como parámetro a de la URI, hay que llamar a simplexml_load_file(rawurlencode('http://example.com/?a=' . urlencode('b&c'))). Desde PHP 5.1.0 no es necesario hacer esto porque PHP lo hará automáticamente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 09/08/2013, 04:47
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Obtener un xml remoto

Muchas gracias por responder, estuve fuera toda la tarde y no pude entrar.
Ahí dice que a partir de PHP 5.1.0 no es necesario hacer eso, y la version que usa appserv es la 5.2.6. No obstante he probado a hacerlo así y sigue apareciendo el mismo warning.
  #6 (permalink)  
Antiguo 09/08/2013, 15:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener un xml remoto

Pues si sale el mismo warning entonces no has hecho mucho que digamos.

Me imagino que sería más sencillo entender lo que haces mal si muestras el código que estás utilizando, de otra forma te las vas a tener que arreglar tu solo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 09/08/2013, 17:57
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Obtener un xml remoto

No puse el código porque en realidad es sólo una línea:

$xml = simplexml_load_file ($url);

Donde $url es un string que contiene la url del xml. Como decía, si esa url la pongo en el navegador, se muestra el xml sin problema, pero esa instrucción no funciona.

Gracias por el interés.
  #8 (permalink)  
Antiguo 09/08/2013, 19:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener un xml remoto

Creo que no me doy a explicar.

Mira, ya sabemos que $url la construyes y es obvio que no necesitamos saber como usas $url, tampoco como la construyes, me refiero al valor de $url.

Es decir, que debes imprimir dicha variable y mostrarnos el resultado.

Ese mismo resultado es el que al final, después de ser evaluado, representa la URL que te da problemas.

Si somos capaces de ver esa URL tal vez podamos hacer la misma prueba y determinar que está mal, no sé, ¿se te ocurre algo mejor?

Ayúdanos a ayudarte.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 10/08/2013, 04:01
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Obtener un xml remoto

Ok, no te entendí, disculpa.
$url es:
https://www.ruralgest.net/operadoresV9/modulos/buscadorV10/RuralGest_XML_V10.php?operador=3579&fecha_e=25/08/2013&n_noches=1&n_personas=3&psw=84311803c723cad9f cda143909218a89

He cambiado el psw con respecto a la url real, nada más.

Gracias.
  #10 (permalink)  
Antiguo 10/08/2013, 09:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener un xml remoto

Pues que raro, acabo de probar con el siguiente código y funciona excelentemente.

Código PHP:
Ver original
  1. $url = 'https://www.ruralgest.net/operadoresV9/modulos/buscadorV10/RuralGest_XML_V10.php?operador=3579&fecha_e=25/08/2013&n_noches=1&n_personas=3&psw=84311803c723cad9fcda143909218a89';
  2.  

Prueba el mismo código, ¿qué te resulta?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 10/08/2013, 12:26
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Obtener un xml remoto

He copiado el código que me has dado y me sigue saliendo el warning.

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "https://www.ruralgest.net/operadoresV9/modulos/buscadorV10/RuralGest_XML_V10.php?operador=3579&fecha_e=25/08/2013&n_noches=1&n_personas=3&psw=84311803c723cad9f cda143909218a89" in C:\AppServ\www\ruralgest\interm.php on line 50
bool(false)


Que desesperación!! Supongo que no es problema de versiones, pero bueno lo menciono por si acaso. Estoy usando AppServ 2.5.10 que viene con php 5.2.6.
  #12 (permalink)  
Antiguo 10/08/2013, 12:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener un xml remoto

Pues yo creo que si es una cuestión de versiones, mi versión de PHP es la 5.5
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 10/08/2013, 12:51
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Obtener un xml remoto

Pues pensaba que no era problema de versiones porque en la documentación de php de simplexml_load_file no hace referencia a ningún problema con la versión que yo tengo.
Probaré con wamp, que tiene versión de php 5.4.
Muchas gracias por tu tiempo.
Saludos.

edito, por cierto, ¿cuál es el software que tienes con esa versión de php? Lo pregunto por si con la 5.4 tampoco funciona.

Última edición por DandyCC; 10/08/2013 a las 13:01
  #14 (permalink)  
Antiguo 10/08/2013, 13:31
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Obtener un xml remoto

He probado con wamp (php 5.4), pero tampoco. Ahora salen dos warnings, el que ya salía y otro más:
"Unable to find the wrapper "https&quot"
He buscado por internet y parece ser que esto es debido a que PHP no es capaz de hacer peticiones HTTP seguras porque no tiene ninguna biblioteca SSL. La solución que encontré fue añadir a php.ini la instrucción

extension=php_openssl.dll

Pero tampoco funcionó. Por favor, dime si puedes que software utilizas para tener esa versión de php y si eso tampoco funciona me doy por vencido
  #15 (permalink)  
Antiguo 10/08/2013, 13:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener un xml remoto

No uso ningún software especial, únicamente he compilado PHP desde las fuentes, nada más.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 10/08/2013, 15:19
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Obtener un xml remoto

Ok, pues nada entonces, me rindo! :)
Gracias por el interés.

Saludos.
  #17 (permalink)  
Antiguo 10/08/2013, 15:29
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Obtener un xml remoto

Usa http://sandbox.onlinephpfunctions.com/ . Puedes ejecutar el mismo código bajo diferentes versiones de php, por si ese es el problema.
También podrías intentar hacerlo en dos pasos.Primero cargar el fichero (con fopen, por ejemplo), y luego pasarlo a la simplexml.Así verías si el problema está en obtener el fichero (firewall?), o en simplexml_load_file.
  #18 (permalink)  
Antiguo 10/08/2013, 16:49
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Obtener un xml remoto

Vaya no conocía esa pagina, a favoritos directa! Gracias :)
Lo he probado pero tienen desabilitado tanto simplexml_load_file como fopen "for security reasons".
También he probado fopen en local y me sigue saliendo el mismo puñetero warning.

Antes de irme a dormir, a la desesperada, he probado a subir los archivos a un hosting gratuito y funciona!! Me voy a cagar en php, en los servidores locales y en la madre que los parió!! La de horas que he perdido cuando el puñetero código funcionaba!!!

En fin, muchas gracias a todos por intentar ayudarme de todas formas.

Saludos.

Etiquetas: xml
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 05:33.