Intentar crear un cliente C # (se desarrollará como un servicio de Windows) que envía solicitudes SOAP a un servicio web (y obtiene los resultados).
De esta pregunta vi este código:
protected virtual WebRequest CreateRequest(ISoapMessage soapMessage)
{
var wr = WebRequest.Create(soapMessage.Uri);
wr.ContentType = "text/xml;charset=utf-8";
wr.ContentLength = soapMessage.ContentXml.Length;
wr.Headers.Add("SOAPAction", soapMessage.SoapAction);
wr.Credentials = soapMessage.Credentials;
wr.Method = "POST";
wr.GetRequestStream().Write(Encoding.UTF8.GetBytes(soapMessage.ContentXml), 0, soapMessage.ContentXml.Length);
return wr;
}
public interface ISoapMessage
{
string Uri { get; }
string ContentXml { get; }
string SoapAction { get; }
ICredentials Credentials { get; }
}
Se ve bien, ¿alguien sabe cómo usarlo y si es la mejor práctica?
c#
soap
webservice-client
Base de datos
fuente
fuente
Tengo esta solución simple aquí :
Enviando solicitud SOAP y recibiendo respuesta en .NET 4.0 C # sin usar las clases WSDL o proxy:
fuente
webRequest.Headers.Add("SOAPAction", "http://tempuri.org/.....");
Comprobar la acción SOAP que está en SoapUI y usar eso.La mejor práctica es hacer referencia al WSDL y usarlo como una referencia de servicio web. Es más fácil y funciona mejor, pero si no tiene el WSDL, las definiciones XSD son un buen código.
fuente
Creo que hay una manera más simple:
fuente
Escribí una clase auxiliar más general que acepta un diccionario basado en cadenas de parámetros personalizados, para que el llamante pueda establecerlos sin tener que codificarlos. No hace falta decir que solo debe usar dicho método cuando desee (o necesite) emitir manualmente un servicio web basado en SOAP: en los escenarios más comunes, el enfoque recomendado sería usar el WSDL del servicio web junto con el Visual Studio de Agregar servicio de referencia característica en su lugar.
Para obtener información adicional y detalles sobre esta clase, también puede leer esta publicación en mi blog.
fuente
Así que este es mi código final después de buscar en Google durante 2 días cómo agregar un espacio de nombres y hacer una solicitud de jabón junto con el sobre SOAP sin agregar proxy / Referencia de servicio
fuente
Llame al servicio web SOAP en c #
fuente
new UpdatedOutlookServiceReferenceAPI.OutlookServiceSoapClient()
?