Ajout d'un en-tête d'autorisation à la référence Web
Je suis d'essayer de faire des demandes auprès d'un client de service web (je ne connais pas la plateforme sous-jacente au client). J'ai consommé du client WSDL dans Visual Studio 2010 en utilisant "Ajouter une Référence Web" et a généré une procuration de ma classe (appelée "ContactService").
J'ai maintenant besoin d'ajouter un en-tête d'autorisation comme celui-ci, à ma demande de service.
Header=Authorization & Value=Basic 12345678901234567890
(le "123456..." valeur ci-dessus est juste un espace réservé)
ContactService service = new ContactService();
//not sure if this is the right way - it's not working
WebClient client = new WebClient();
client.Headers.Add("Authorization", "Basic 12345678901234567890");
service.Credentials = client.Credentials;
int contactKey = null;
try
{
contactKey = service.CreateContact("ABC", emailAddress, firstName, lastName, null);
}
Quelle est la bonne façon de l'ajout de l'en-tête d'autorisation à la demande de service?
Merci!
source d'informationauteur Mike
Vous devez vous connecter pour publier un commentaire.
La réponse précédente était sur la bonne voie, mais ça devait être dans un endroit différent.
J'ai ajouté à mon site web référence de la classe proxy .Net généré:
Un site Web de Référence de la classe proxy s'étend Système.Web.Services.Les protocoles.SoapHttpClientProtocol. Cette classe contient un appel Système.Net.WebRequest.GetWebRequest(Uri Uri). Un WebRequest nous permettent de définir des en-têtes spécifiques à la demande lorsque le proxy de la classe de méthodes sont invoquées.
Merci pour votre aide!
Il y a quelques changements à faire.
Tout d'abord, il y a une pratique constante
HttpRequestHeader.Authorization
.Deuxièmement, attendent-ils la tête à être Encodées en Base64 - ce qui est normalement requis pour l'authentification de base.
J'écris cela pour qui que ce problème a maintenant. Comme dans les précédentes réponses mentionnées hiérarchie d'héritage qui va jusqu'à la
WebClientProtocol
classe, cette classe aICredentials
propriété, il suffit de définir cette propriété par unNetworkCredential
exemple comme ci-dessous:Je pense que d'une chose: est la façon la plus simple sans changer de Référence.cs ou ajouter des en-têtes.