J'ai reçu un service Web écrit en Java auquel je ne peux pas apporter de modifications. Il nécessite l'authentification de l'utilisateur avec l'authentification de base pour accéder à l'une des méthodes. La façon suggérée d'interagir avec ce service dans .NET consiste à utiliser Visual Studio 2005 avec WSE 3.0 installé.Impossible d'appeler le service Web avec l'authentification de base à l'aide de WCF
Ceci est un problème, car le projet utilise déjà Visual Studio 2008 (ciblant .NET 2.0). Je pourrais le faire dans VS2005, mais je ne veux pas lier le projet à VS2005 ou le faire en créant un assemblage dans VS2005 et en incluant cela dans la solution VS2008 (qui lie essentiellement le projet à 2005 pour tout changement futur à l'assemblage). Je pense que l'une ou l'autre de ces options rendrait les choses compliquées pour les nouveaux développeurs en les forçant à installer WSE 3.0 et empêcher le projet d'utiliser 2008 et les fonctionnalités de .NET 3.5 dans le futur ... je crois vraiment en utilisant WCF est le chemin à parcourir.
Je me suis intéressé à l'utilisation de WCF pour cela, mais je ne sais pas comment faire pour que le service WCF comprenne qu'il doit envoyer les en-têtes d'authentification avec chaque requête. Je reçois des erreurs 401 lorsque je tente de faire quelque chose avec le service Web.
C'est ce que mon code ressemble à:
WebHttpBinding webBinding = new WebHttpBinding();
ChannelFactory<MyService> factory =
new ChannelFactory<MyService>(webBinding, new EndpointAddress("http://127.0.0.1:80/Service/Service/"));
factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
factory.Credentials.UserName.UserName = "username";
factory.Credentials.UserName.Password = "password";
MyService proxy = factory.CreateChannel();
proxy.postSubmission(_postSubmission);
Cela courir et jeter l'exception suivante:
The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Basic realm=realm'.
Et cela a une exception intérieure:
The remote server returned an error: (401) Unauthorized.
Toute idée de ce qui pourrait causer ce problème serait grandement appréciée.
Marc, Pouvez-vous me montrer comment le code et config si elle est REST service Java basé? – rajibdotnet
La propriété ClientCredentials n'apparaît pas du tout pour moi après avoir tapé le proxy. – rajibdotnet
@rajibdotnet: Eh bien, le code dans la question est fondamentalement ce que vous devez appeler un service basé sur REST .... si cela n'aide pas: s'il vous plaît ** poser votre propre question ** afin que les gens puissent répondre ... –