top para hashtags generador .net xml web-services soap

.net - para - hashtags ready to copy



¿Cómo publicar solicitud SOAP desde.NET? (7)

Tengo la solicitud SOAP en un archivo XML. Deseo publicar la solicitud en el servicio web en .NET ¿Cómo implementarlo?


Aquí hay otro ejemplo: este en VB:

Dim manualWebClient As New System.Net.WebClient() manualWebClient.Headers.Add("Content-Type", "application/soap+xml; charset=utf-8") '' Note: don''t put the <?xml... tag in--otherwise it will blow up with a 500 internal error message! Dim bytArguments As Byte() = System.Text.Encoding.ASCII.GetBytes( _ "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">" & System.Environment.NewLine & _ " <soap12:Body>" & System.Environment.NewLine & _ " <Multiply xmlns=""http://cptr446.class/"">" & System.Environment.NewLine & _ " <x>5</x>" & System.Environment.NewLine & _ " <y>4</y>" & System.Environment.NewLine & _ " </Multiply>" & System.Environment.NewLine & _ " </soap12:Body>" & System.Environment.NewLine & _ "</soap12:Envelope>") Dim bytRetData As Byte() = manualWebClient.UploadData("http://localhost/CPTR446.asmx", "POST", bytArguments) MessageBox.Show(System.Text.Encoding.ASCII.GetString(bytRetData))


Esta no es la manera normal. Por lo general, debe usar WCF o la referencia de servicio web de estilo anterior para generar un cliente proxy para usted.

Sin embargo, lo que debe hacer generalmente es usar HttpWebRequest para conectarse a la URL y luego enviar el XML en el cuerpo de la solicitud.


He hecho algo como esto, crear una solicitud xml manualmente y luego usar el objeto webrequest para enviar la solicitud:

string data = "the xml document to submit"; string url = "the webservice url"; string response = "the response from the server"; // build request objects to pass the data/xml to the server byte[] buffer = Encoding.ASCII.GetBytes(data); HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = buffer.Length; Stream post = request.GetRequestStream(); // post data and close connection post.Write(buffer, 0, buffer.Length); post.Close(); // build response object HttpWebResponse response = request.GetResponse() as HttpWebResponse; Stream responsedata = response.GetResponseStream(); StreamReader responsereader = new StreamReader(responsedata); response = responsereader.ReadToEnd();

Las variables de cadena al comienzo del código son las que usted establece, luego obtiene una respuesta de cadena (con suerte ...) del servidor.


Me pregunto cómo se genera el XML y ¿es un mensaje SOAP válido? Puede publicarlo a través de HTTP como lo sugirieron las personas de arriba.

Si quieres probar si va a funcionar, puedes probar con SoapUI (me refiero a las pruebas).


Necesita publicar los datos a través de HTTP. Use la clase WebRequest para publicar los datos. Tendrá que enviar otros datos con la solicitud posterior para asegurarse de tener un sobre válido de SOAP. Lea la especificación SOAP para todos los detalles.


Perdón por golpear un hilo viejo aquí está mi solución a esto

'''''' <summary> '''''' Sends SOAP to a web service and sends back the XML it got back. '''''' </summary> Public Class SoapDispenser Public Shared Function CallWebService(ByVal WebserviceURL As String, ByVal SOAP As String) As XmlDocument Using wc As New WebClient() Dim retXMLDoc As New XmlDocument() wc.Headers.Add("Content-Type", "application/soap+xml; charset=utf-8") retXMLDoc.LoadXml(wc.UploadString(WebserviceURL, SOAP)) Return retXMLDoc End Using End Function End Class


var uri = new Uri("http://localhost/SOAP/SOAPSMS.asmx/add"); var req = (HttpWebRequest) WebRequest.CreateDefault(uri); req.ContentType = "text/xml; charset=utf-8"; req.Method = "POST"; req.Accept = "text/xml"; req.Headers.Add("SOAPAction", "http://localhost/SOAP/SOAPSMS.asmx/add"); var strSoapMessage = @"<?xml version=''1.0'' encoding=''utf-8''?> <soap:Envelope xmlns:soap=''http://schemas.xmlsoap.org/soap/envelope/'' xmlns:xsi=''http://www.w3.org/2001/XMLSchema-instance'' xmlns:xsd=''http://www.w3.org/2001/XMLSchema''> <soap:Body><add xmlns=''http://tempuri.org/''><a>23</a><b>5</b></soap:Body> </soap:Envelope>"; using (var stream = new StreamWriter(req.GetRequestStream(), Encoding.UTF8)) stream.Write(strSoapMessage);