Tentando criar um cliente C # (será desenvolvido como um serviço do Windows) que envia solicitações SOAP para um serviço da Web (e obtém os resultados).
A partir desta pergunta , 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; }
}
Parece bom, alguém sabe como usá-lo e se é a melhor prática?
c#
soap
webservice-client
Base de dados
fonte
fonte
Eu tenho essa solução simples aqui :
Enviando solicitação SOAP e recebendo resposta no .NET 4.0 C # sem usar as classes WSDL ou proxy:
fonte
webRequest.Headers.Add("SOAPAction", "http://tempuri.org/.....");
Verifique a ação SOAP que está no SoapUI e use isso.A melhor prática é fazer referência ao WSDL e usá-lo como uma referência de serviço da web. É mais fácil e funciona melhor, mas se você não possui o WSDL, as definições de XSD são um bom código.
fonte
Eu acho que existe uma maneira mais simples:
fonte
Eu escrevi uma classe auxiliar mais geral que aceita um dicionário baseado em string de parâmetros personalizados, para que eles possam ser definidos pelo chamador sem precisar codificá-los. Escusado será dizer que você só deve usar esse método quando desejar (ou precisar) emitir manualmente um serviço da Web baseado em SOAP: nos cenários mais comuns, a abordagem recomendada seria usar o WSDL de Serviço da Web junto com o Add Studio Reference Visual Service Reference recurso em vez disso.
Para informações e detalhes adicionais sobre esta aula, você também pode ler esta postagem no meu blog.
fonte
Portanto, este é o meu código final, depois de pesquisar no Google por 2 dias, sobre como adicionar um namespace e fazer uma solicitação de sabão junto com o envelope SOAP sem adicionar proxy / referência de serviço
fonte
Ligue para o serviço web SOAP em c #
fonte
new UpdatedOutlookServiceReferenceAPI.OutlookServiceSoapClient()
?