Foros del Web » Programando para Internet » PHP »

XML y PHP

Estas en el tema de XML y PHP en el foro de PHP en Foros del Web. Que tal Foro. Pues nuevamente me toca pedir consejo, y esta vez no se ni siquiera que es lo que busco. El esenario es el ...
  #1 (permalink)  
Antiguo 07/01/2009, 18:07
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
XML y PHP

Que tal Foro.

Pues nuevamente me toca pedir consejo, y esta vez no se ni siquiera que es lo que busco.

El esenario es el siguiente

Tengo la pagina de la empresa publicada sin problemas, ahi tenemos publicados unos costos sacados de una BD, y la BD se alimenta de forma manual.
La fuente de donde se sacan estos costos es una de escritorio. Segun me informan hay una forma de conectarlos a traves de un XML
desde mi pagina web debo generar un XML que enviare el servidor de aplicacion (de escritorio) a travez de un puerto y esta aplicacion regresara tambien un XML a la pagina con los datos que se requieren.

Aqui esta el problema, se generar el XML desde mi pagina (facil)
Creo poder enviar este XML a la aplicacion (he pensado que con un fsockopen y asi se le indica que puerto se utiliza)
Pero como le hago para leer la respuesta de la aplicacion... ( esto si no se como hacerlo )

Espero que con este punto me puedan orientar.

Cabe mensionar que hoy (y por este proyecto) es la primervez que pongo atencion a XML

Gracias
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #2 (permalink)  
Antiguo 07/01/2009, 21:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: XML y PHP

Con fsockopen abres un puntero hacia el archivo, despues de eso tienes que hacer un simple fread y fwrite para escribir y leer la respuesta.

Saludos.
  #3 (permalink)  
Antiguo 08/01/2009, 09:29
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: XML y PHP

pues esto es lo que originalmente tenia

Código PHP:
<?php
$fp 
fsockopen("128.10.17.100"6000$errno$errstr30);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";
} else {
    
$out  '<?xml version="1.0"?>';
    
$out .= '<MSJ TIPOMSJ="1" dir="1">';
    
$out .= '<prop name="CUENTA" value="346000250500"/>';
    
$out .= '<prop name="TERMINAL" value="0442000411"/>';
    
$out .= '<prop name="TICKET" value="4421926422"/>';
    
$out .= '<prop name="SIGNO" value="+"/>';
    
$out .= '<prop name="IMPORTE" value="0002977033"/>';
    
$out .= '<prop name="PROCESO" value="1"/>';
    
$out .= '<prop name="PLAZO" value=" "/>';
    
$out .= '</MSJ>';

    
//echo "Connected";
    
fwrite($fp$out);
    while (!
feof($fp)) {
        print 
fgets($fp128)."<br>";
    }
    
fclose($fp);
}
?>

Hasta el fwrite todo bien, pero por alguna razon al iniciar el while se cuelga... es por eso que digo que no se como leer...
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810

Última edición por Avatar810; 08/01/2009 a las 10:11
  #4 (permalink)  
Antiguo 08/01/2009, 09:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: XML y PHP

Pues entonces el problema es de tu app, ya que el while va a esperar hasta que el servidor cierre la conexion (feof == true), si nunca la cierra es por algo, revisa como es que te esta regresando la cadena.

Saludos
  #5 (permalink)  
Antiguo 08/01/2009, 10:10
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: XML y PHP

Gracias GatorV por darle seguimiento.

La aplicacion funciona, pues el ejercicio que estoy tratando de lograr es una copia de otra area de la empresa que esta funcional.

Desde mi servidor (SUSE)

telnet 128.10.17.100 6000

Ya conectado envio el XML

<?xml version="1.0"?>
<MSJ TIPOMSJ="1" dir="1">
<prop name="CUENTA" value="346000250500"/>
<prop name="TERMINAL" value="0442000411"/>
<prop name="TICKET" value="4421926422"/>
<prop name="SIGNO" value="+"/>
<prop name="IMPORTE" value="0002977033"/>
<prop name="PROCESO" value="1"/>
<prop name="PLAZO" value=" "/>
</MSJ>

Y me responde (en el telnet)

<?xml version="1.0"?>
STS="0" MSJ="">
<prop name="ESTATUS" value="0"/>
<prop name="MENSAJE" value="JULIO R. ALVAREZ"/>
<prop name="SALDO" value="00000000"/>
<prop name="CUENTA" value="346000250500"/>
<prop name="REFERENCIA" value="0"/>
<prop name="TERMINAL" value="0442000411"/>
<prop name="TICKET" value="4421926422"/>
</MSJ>

Osea, el APP recibe y responde con un XML sin problemas desde el telnet, ya sea desde una PC o del servidor.
Pero al correr la aplicacion con el PHP no logro leer la respuesta

Alguna sugerencia??
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810

Última edición por Avatar810; 08/01/2009 a las 10:18
  #6 (permalink)  
Antiguo 08/01/2009, 10:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: XML y PHP

Pues revisa, pon un numero máximo de iteraciones en tu PHP, para que se pare en cierto tiempo y asi puedas ver que es lo que te respondio.

Saludos.
  #7 (permalink)  
Antiguo 08/01/2009, 11:26
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: XML y PHP

He hecho eso que sugieres y creo que se puede decir que ya funciona lo indispensable.

Cambie a este codigo
Código:
//	echo "Connected<br>";
	fwrite($fp, $out);
	for($i=0;$i<10;$i++) {
//	while (!feof($fp)) {
		echo fgets($fp, 128); 
	}
Y de respuesta (en codigo fuente ) puedo ver esto

<?xml version="1.0"?>
STS="0" MSJ="">
<prop name="ESTATUS" value="0"/>
<prop name="MENSAJE" value="JULIO R. ALVAREZ"/>
<prop name="SALDO" value="00000000"/>
<prop name="CUENTA" value="346000250500"/>
<prop name="REFERENCIA" value="0"/>
<prop name="TERMINAL" value="0442000411"/>
<prop name="TICKET" value="4421926422"/>
</MSJ>

Esto quiere decir que ya obtengo la respuesta pero por alguna razón no encuentra el fin de archivo; esto tendra alguna relación con que no pueda cerrar el telnet tampoco??
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #8 (permalink)  
Antiguo 08/01/2009, 11:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: XML y PHP

Exacto, por eso te digo que el problema esta en tu aplicacion tercera ya que nunca te manda el EOF.

Saludos
  #9 (permalink)  
Antiguo 08/01/2009, 12:05
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: XML y PHP

Perfecto, por lo menos de mi lado ya quedaria con esto.

Muchas gracias
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #10 (permalink)  
Antiguo 08/01/2009, 12:12
 
Fecha de Ingreso: julio-2008
Mensajes: 40
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: XML y PHP

¿Has probado a hacer a conexión con este servidor de escritorio desde telnet para comprobar que funciona bien la comunicación?
  #11 (permalink)  
Antiguo 08/01/2009, 12:18
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: XML y PHP

Si... en el post de las 1010 dije eso...
Y el tema ya quedo resuelto, pero gracias por escribir...
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
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 00:47.