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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Pelusa
26/01/2007 - 10:51 | Informe spam
Te explico, el problema no lo tengo al recoger la respuesta eso lo hago
perfectamente. El problema lo tengo antes de eso, cuando quiero recoger el
xml enviado por la petición.

Es decir A envia un xml a B esperando un response, pues bien, el lío me
viene cuando B debe recoger el XML enviado por A y devolver la respuesta con
un document.write(xml).
No hay manera de recoger el XML enviado por A. Lo hago con un Request.Form,
pero no hay na de na.

Espero haberme explicado mejor.
Respuesta Responder a este mensaje
#3 Francesc
26/01/2007 - 12:13 | Informe spam
Ok, a ver cuando tu creas el SERVICIO WEB (que es donde tienes el problema)
debes indicar la URL de tu servico WSDL/WEB:

VB.NET
[WebService(Namespace="http://midominio.com/miservicioweb/...smx",
Description="Lo que se te ocurra")]


una vez tengas la URL con el servicio web echo, debes ir al poryecto CLIENTE
y agragar "http://midominio.com/miservicioweb/...asmx" como una
referencia web, te saldran los servicios web y tu desde la aplicacion cliente:

Miservicoweb nuevo = new Miservicioweb();
nuevo.EL_NOMBRE_DE_TU_FUNCION(LA_PREGUNTA);

A ver si t sirve de ayuda, si no vuelve a preguntar y a ver en que te puedo
ayudar mas.
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.
Respuesta Responder a este mensaje
#4 Pelusa
26/01/2007 - 12:41 | Informe spam
Frances, yo sólo quiero recoger el XML que me mandan por POST. O sea alguien
hace una llamada a mi página enviado por post un XML que es el que quiero
recoger.
¿Cómo debo recogerlo?
¿con el request.form?
si es así nome va bien, ya que lo veo vacío.
¿Cómo debbo recoger ese XML que se me manda?

espero que me entiedas.
Respuesta Responder a este mensaje
#5 Francesc
26/01/2007 - 13:41 | Informe spam
A ver, depende de como sea tu servicio web, pega el codigo fuente aqui o por
mail y te digo...

Tu lo que debes hacer es recojer por POST los datos, que normalmente se hace
con HttpWebRequest o HttpListener... depnde de como sea el servicio, sin ver
el servicio no puedo ayudarte..
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.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida