Foros del Web » Programando para Internet » PHP »

Enviar XML por socket y recibir respuesta XML

Estas en el tema de Enviar XML por socket y recibir respuesta XML en el foro de PHP en Foros del Web. Hola a todos, estoy buscando documentación o ejemplos de como se puede enviar un XML mediante un socket , recibir la informacion en XML tambien ...
  #1 (permalink)  
Antiguo 04/11/2009, 06:47
 
Fecha de Ingreso: octubre-2009
Mensajes: 26
Antigüedad: 14 años, 6 meses
Puntos: 0
Enviar XML por socket y recibir respuesta XML

Hola a todos,

estoy buscando documentación o ejemplos de
como se puede enviar un XML mediante un socket , recibir la informacion en XML tambien y tratarla posteriormente.


Los datos son los siguientes:

servidor: 192.168.1.100
puerto: 12345

estructura del xml:

<root>
<nombre>fulano</nombre>
<edad>12</edad>
</root>

envio del XML -> respuesta del servidor

<root>
<status>true</status>
</root>

parseo de la repuesta.

El parseo de la respuesta ya lo realizo con alguna funcioncilla que tengo. Me interesaría el código de conexión ,envió al servidor y la captura de respuesta, (que entiendo se puede realizar todo en el mismo script).

Gracias a todos por hace esto mas facil.
  #2 (permalink)  
Antiguo 04/11/2009, 06:54
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Enviar XML por socket y recibir respuesta XML

el ejemplo básico del socket cliente en el manual de php te sirve, sólo debes cambiarle el servidor, el puerto, etc. te traerá el resultado como un string y luego podrías usar una libreria para interpretar el xml (expat, SimpleXML:"solo php5"). Suerte!:

Código PHP:
<?php
error_reporting
(E_ALL);

echo 
"<h2>Conexi&oacute;n TCP/IP</h2>\n";

/* Obtener el puerto para el servicio WWW. */
$puerto_servicio getservbyname('www''tcp');

/* Obtener la direccion IP del host de destino. */
$direccion gethostbyname('www.example.com');

/* Crear un socket TCP/IP. */
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
if (
$socket 0) {
    echo 
"socket_create() fall&oacute;: motivo: " socket_strerror($socket) . "\n";
} else {
    echo 
"OK.\n";
}

echo 
"Intentando una conexi&oacute;n con '$direccion' en el puerto '$puerto_servicio'...";
$resultado socket_connect($socket$direccion$puerto_servicio);
if (
$resultado 0) {
    echo 
"socket_connect() fall&oacute;.\nMotivo: ($resultado) " .
         
socket_strerror($resultado) . "\n";
} else {
    echo 
"OK.\n";
}

$entrada "HEAD / HTTP/1.1\r\n";
$entrada .= "Host: www.example.com\r\n";
$entrada .= "Connection: Close\r\n\r\n";
$salida '';

echo 
"Enviando petici&oacute;n HTTP HEAD...";
socket_write($socket$entradastrlen($entrada));
echo 
"OK.\n";

echo 
"Leyendo respuesta:\n\n";
while (
$salida socket_read($socket2048)) {
    echo 
$salida;
}

echo 
"Cerrando socket...";
socket_close($socket);
echo 
"OK.\n\n";
?>
  #3 (permalink)  
Antiguo 04/11/2009, 07:02
 
Fecha de Ingreso: octubre-2009
Mensajes: 26
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Enviar XML por socket y recibir respuesta XML

gracias maycolalvarez.

Por lo que veo debería cambiar

$entrada='<?xml version="1.0" encoding="iso-8859-1"?>';
$entrada.='<root>';
...
$entrada.='</root>';

y $salida seria el xml de vuelta ¿no?

gracias
  #4 (permalink)  
Antiguo 04/11/2009, 10:21
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Enviar XML por socket y recibir respuesta XML

sí, y la salida es una cadena (lo que te devuelve el server) que será un xml si dicho server lo devuelve así
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 17:23.