9 votes

Consommer l'API RESt à partir de .NET

J'essaie de consommer une API REST à partir de mon application .NET. Ces API sont toutes écrites en JAVA. On me demande de transmettre les informations d'authentification dans les en-têtes HTTP. Comment puis-je transmettre ces informations d'authentification comme 'DATE', 'AUTHORIZATION' et 'Accept' via les en-têtes HTTP ?

Quelle classe de .NET puis-je utiliser pour accomplir cette tâche ? Quelqu'un peut-il m'aider ?

13voto

Darrel Miller Points 56797

Mise à jour

Cette bibliothèque a maintenant été remplacée par http://nuget.org/packages/Microsoft.Net.Http/2.1.10


Utilisez la bibliothèque client Microsoft.Http qui est dans WCF REST Starter Kit Preview 2 .

Voici comment vous pourriez l'utiliser :

    var client = new HttpClient();
    client.DefaultHeaders.Authorization = new Credential("ArbitraryAuthHeader");
    client.DefaultHeaders.Date = DateTime.Now;
    client.DefaultHeaders.Accept.Add("application/xml");

    var response = client.Get("http://example.org");

    var xmlString = response.Content.ReadAsString();

4voto

autonomatt Points 2111

Juste pour ajouter un peu de valeur à ce fil de discussion (je cherchais moi aussi un moyen de consommer un service RESTful et de fournir facilement des informations d'identification et je suis tombé sur ce fil de discussion.... Je n'avais pas l'exigence de la "date"), Aaron Skonnard a écrit un excellent article sur l'utilisation du kit de démarrage REST de WCF :

Guide du développeur pour le kit de démarrage WCF REST

Une section très instructive explique comment consommer un service RESTful à l'aide de HttpClient. Et voici l'extrait de code permettant de communiquer avec Twitter :

HttpClient http = new HttpClient("http://twitter.com/statuses/");
http.TransportSettings.Credentials =
    new NetworkCredential("{username}", "{password}");
HttpResponseMessage resp = http.Get("friends_timeline.xml");
resp.EnsureStatusIsSuccessful();
ProcessStatuses(resp.Content.ReadAsStream());

1voto

Mitchel Sellers Points 38352

Il existe plusieurs façons de procéder, mais l'utilisation des objets WebRequest est la plus rapide si vous n'avez que quelques appels à effectuer.

Ce site Le site Web de la Commission européenne, qui présente un excellent aperçu du processus, est le suivant

0voto

Mark Seemann Points 102767

Malgré son nom quelque peu trompeur, Services de données ADO.NET (qui fait partie de .NET 3.5) contient des API pour exposer et consommer des services basés sur REST. Dans votre cas, vous pouvez ignorer la partie qui vous permet d'exposer des services et vous concentrer sur la partie client.

Il prend en charge LINQ et toutes sortes de fonctionnalités, ce qui vous permet d'interroger votre service REST comme ceci :

var selectedOrders = from o in context.Orders
                     where o.Freight > 30
                     orderby o.ShippedDate descending 
                     select o;

Il y a plus à ce sujet aquí . Essayez-le - j'en ai été assez satisfait jusqu'à présent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X