2015-07-07 3 views
5

Ich muss auf REST-Service von .NET-Anwendung zugreifen und es scheint, dass es mit einem dieser beiden Pakete durchgeführt werden kann. Es ist mir nicht klar, welches Paket in welchen Szenarien verwendet werden soll. Kann jemand mehr Licht hineinbringen?Microsoft.Net.Http vs Microsoft.AspNet.WebApi.Client

+1

Um down-Wähler: Care zu erarbeiten, was ist los mit der Frage ?! – Anil

+0

Es ist eine gute Frage. Downvoter hat es nicht verstanden. –

Antwort

8

Die kurze Antwort ist ja, verwenden Sie Microsoft.AspNet.WebApi.Client.

https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Client/

Dieses Paket bietet Unterstützung für die Formatierung und Content Negotiation System.Net.Http. Es umfasst die Unterstützung für codierte Daten von JSON, XML und Formular-URL .

Microsoft.AspNet.WebApi.Client tatsächlich hängt auf Microsoft.Net.Http, und erweitert die HttpClient mit weiteren Funktionen, die Sie wahrscheinlich auf einen RESTful-Dienst wie ASP.NET Web API (zum Beispiel JSON und XML-Unterstützung) sprechen müßten.

Beide Pakete arbeiten im Namespace System.Net.Http und kreisen um die Schlüsselklasse HttpClient. Das Microsoft.AspNet.WebApi.Client-Paket enthält die System.Net.Http.Formatting.dll-Assembly, die einige nützliche Erweiterungsmethoden zu HttpClient und HttpContent (und anderen) hinzufügt.

So zum Beispiel:

using (var client = new HttpClient()) 
{ 
    var response = await client.GetAsync("http://localhost/foo/api/products/1"); 
    response.EnsureSuccessStatusCode(); 
    var product = await response.Content.ReadAsAsync<ProductInfo>(); 
} 

ReadAsAsync Die Methode ist eine Methode, die Verlängerungs Microsoft.AspNet.WebApi.Client auf das HttpContent Objekt hinzufügt. Diese Methode ermittelt automatisch, ob die Antwort JSON-, XML- oder URL-codiert ist (die oben erwähnte Inhaltsverhandlung), und verwendet anschließend den entsprechenden Formatierer, um sie in Ihr stark typisiertes Modell zu deserialisieren (in diesem Fall ProductInfo).

Wenn Sie versucht haben, nur Microsoft.Net.Http zu verwenden, wäre die ReadAsAsync-Methode für Sie nicht verfügbar, und Sie könnten den Inhalt nur als Rohdaten wie Bytes oder Zeichenfolge lesen und müssen Mach das Serialisieren/Deserialisieren selbst.

Sie erhalten auch Erweiterungsmethoden/POST zurück zu setzen, um den Dienst in JSON oder XML ohne zu tun zu haben, dass Sie sich selbst:

// Save the ProductInfo model back to the API service 
    await client.PutAsJsonAsync("http://localhost/foo/api/products/1", product); 

Key Microsoft.AspNet.WebApi.Client Erweiterungen:

https://msdn.microsoft.com/en-US/library/system.net.http.httpclientextensions.aspx https://msdn.microsoft.com/en-US/library/system.net.http.httpcontentextensions.aspx

Verwandte Themen