Tentative de création d'un client C # (qui sera développé en tant que service Windows) qui envoie des requêtes SOAP à un service Web (et obtient les résultats).
De cette question, j'ai vu ce code:
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; }
}
Ça a l'air bien, n'importe qui sait comment l'utiliser et si c'est la meilleure pratique?
c#
soap
webservice-client
Base de données
la source
la source
J'ai cette solution simple ici :
Envoi d'une requête SOAP et réception d'une réponse dans .NET 4.0 C # sans utiliser le WSDL ou les classes proxy:
la source
webRequest.Headers.Add("SOAPAction", "http://tempuri.org/.....");
Vérifiez l'action SOAP qui se trouve dans SoapUI et utilisez-la.La meilleure pratique consiste à référencer le WSDL et à l'utiliser comme une référence de service Web. C'est plus facile et fonctionne mieux, mais si vous n'avez pas le WSDL, les définitions XSD sont un bon morceau de code.
la source
Je pense qu'il existe un moyen plus simple:
la source
J'ai écrit une classe d'assistance plus générale qui accepte un dictionnaire basé sur des chaînes de paramètres personnalisés, afin qu'ils puissent être définis par l'appelant sans avoir à les coder en dur. Il va sans dire que vous ne devez utiliser cette méthode que lorsque vous souhaitez (ou avez besoin) d'émettre manuellement un service Web basé sur SOAP: dans la plupart des scénarios courants, l'approche recommandée consisterait à utiliser le Web Service WSDL avec l' ajout de référence de service Visual Studio fonctionnalité à la place.
Pour plus d'informations et de détails concernant cette classe, vous pouvez également lire cet article sur mon blog.
la source
Voici donc mon code final après avoir cherché sur Google pendant 2 jours sur la façon d'ajouter un espace de noms et de faire une demande de savon avec l'enveloppe SOAP sans ajouter de proxy / référence de service
la source
Appeler le service Web SOAP en c #
la source
new UpdatedOutlookServiceReferenceAPI.OutlookServiceSoapClient()
?