2011-02-04 10 views
8

Tengo que enviar el documento XML como parámetro para solicitar una WebRequest del servicio mediante el método Post.Pasar el documento XML como parámetro a los servicios web en C#

¿Alguien puede ayudar a ser acerca de cómo enviar el documento XML como parámetro, o cómo hacer que todo el documento en la cadena pase como documento.

+0

La etiqueta 'web-services' es un poco engañosa aquí. No está consumiendo un servicio web, sino que está publicando datos XML como datos de formulario. – Filburt

+0

¿Intentó enviar XmlDocument.OuterXml (que es de tipo cadena)? – EvgK

+0

¿Qué es OuterXML es esta función inbuit? Creo que esto no es para XMLDocument, sino para XmlNode. –

Respuesta

8

Si desea publicar sus datos XML mediante un parámetro de formulario denominado que tiene que hacer algo como esto:

HttpWebRequest request = HttpWebRequest.Create("http://yourdomain.com/whatever") as HttpWebRequest; 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 

Encoding e = Encoding.GetEncoding("iso-8859-1"); 
XmlDocument doc = new XmlDocument(); 
doc.LoadXml("<foo><bar>baz</bar></foo>"); 
string rawXml = doc.OuterXml; 

// you need to encode your Xml before you assign it to your parameter 
// the POST parameter name is myxmldata 
string requestText = string.Format("myxmldata={0}", HttpUtility.UrlEncode(rawXml, e)); 

Stream requestStream = request.GetRequestStream(); 
StreamWriter requestWriter = new StreamWriter(requestStream, e); 
requestWriter.Write(requestText); 
requestWriter.Close(); 
+0

Gracias Filburt, pero tienes el XMLDocument, ¿puedes especificar mi acerca de cómo convertir XMLDocument en una cadena? –

+0

@Bhavik Like EvgK sugirió que puede obtener la cadena Xml por la propiedad XmlDocument.OuterXml. – Filburt

+0

Lo siento señor, pero no existe tal propiedad XmlDocument.OuterXml en cambio es XmlNode.OuterXml. –

5

Lee este artículo que se explica por el documento XML y servicios web Passing XML document as an parameter to Web services

[WebMethod] 

public System.Xml.XmlDocument SampelXmlMethod(System.Xml.XmlDocument xmldoc) 


string xmldata = "<xform>" + 

     "<instance>" + 

     "<FirstName>Andrew</FirstName>" + 

     "<LastName>Fuller</LastName>" + 

     "<BirthDate>2/19/1952</BirthDate>" + 

     "</instance>" + 

     "</xform>"; 



    //Load xmldata into XmlDocument Object 
    System.Xml.XmlDocument SendingXmlDoc = new System.Xml.XmlDocument(); 

    SendingXmlDoc.LoadXml(xmldata); 



    //Call web service and get xmldocument back 
    System.Xml.XmlDocument ReceivingXmlDoc = new System.Xml.XmlDocument(); 

    XmlService ser = new XmlService(); //Your web srevice.. 

    ReceivingXmlDoc = ser.SampelXmlMethod(SendingXmlDoc); 
+0

Lo siento, pero tengo que obtener esto a través del método POST ya que no puedo pasar esto como un argumento para la función. –

Cuestiones relacionadas