Recoger XML por http

26/01/2007 - 09:56 por Pelusa | Informe spam
Hola,
tengo problemas a la hora de recoger un xml que se me manda por post y
devolver una contestación a esa petición.

Desde la página A que manda el xml a la página B uso este método:

public string ConectarHTTP(string Request)
{
string Response;
string URL = "LA URL DONDE ENVIAS LA PETICION";
UTF8Encoding isoEncoding = new UTF8Encoding();
byte[] postbytes = isoEncoding.GetBytes(Request);

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "text/xml";
req.Method = "POST";
req.ContentLength = postbytes.Length;
Stream stm = req.GetRequestStream();

stm.Write(postbytes, 0, postbytes.Length);
stm.Close();

WebResponse resp = req.GetResponse();
stm = resp.GetResponseStream();
StreamReader r = new StreamReader(stm);
Response = r.ReadToEnd();
r.Close();

return Response;
}

que en principio funciona perfectamente. El problema vien en la página B,
cuando esta tiene que recogerlo.
Hago un Request.Form.ToString(), pero eso está vacío, y no encuentro el XML
por ningún sitio.

¿Podríais indicarme cómo debería hacerlo o que es lo que estoy haciendo mal?

Muchas gracias por adelantado.
 

Leer las respuestas

#1 Francesc
26/01/2007 - 10:37 | Informe spam
Jejeje Holas, es mi codigo te lo colge el otro dia ;)

A ver si te fijas la respuesta esta en response, si hace la consola de
deputración y vas linea linea con el F11 en el visual studio, veras que
alli dentro esta el documento XML.

Si la URL es correcta dentro de RESPONSE estara seguro la respuesta de la
peticion.

Entonces una vez dentro del STRING RESPONSE en la funcion de tratar lo que
es la respuesta sea de donde sea, debes hacer un:

XmlDocument MiDocumento = new XmlDocument();
MiDocumento.LoadXml(RESPONSE); //Este falla si hay errores en el XML
o un
MiDocumento.Load(RESPONSE); //Este no falla aunque haya errores depnde de
como lo quieras hacer

Luego una vez lo tengas en Midocumento puedes hacer un
XmlTextReader MiLecotr = new XmlTextReader();

Y ir leyendo el XML nodo por nodo.

Mi email que leo mas es este: por si tienes alguna
duda...o lo que sea contacta conmigo.


Francesc Jaumot
España (Lérdia)


"Pelusa" wrote:

Hola,
tengo problemas a la hora de recoger un xml que se me manda por post y
devolver una contestación a esa petición.

Desde la página A que manda el xml a la página B uso este método:

public string ConectarHTTP(string Request)
{
string Response;
string URL = "LA URL DONDE ENVIAS LA PETICION";
UTF8Encoding isoEncoding = new UTF8Encoding();
byte[] postbytes = isoEncoding.GetBytes(Request);

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "text/xml";
req.Method = "POST";
req.ContentLength = postbytes.Length;
Stream stm = req.GetRequestStream();

stm.Write(postbytes, 0, postbytes.Length);
stm.Close();

WebResponse resp = req.GetResponse();
stm = resp.GetResponseStream();
StreamReader r = new StreamReader(stm);
Response = r.ReadToEnd();
r.Close();

return Response;
}

que en principio funciona perfectamente. El problema vien en la página B,
cuando esta tiene que recogerlo.
Hago un Request.Form.ToString(), pero eso está vacío, y no encuentro el XML
por ningún sitio.

¿Podríais indicarme cómo debería hacerlo o que es lo que estoy haciendo mal?

Muchas gracias por adelantado.

Preguntas similares