2015-07-07 10 views
5

Potrzebuję uzyskać dostęp do usługi REST z aplikacji .NET i wydaje się, że można to zrobić z dowolnym z tych dwóch pakietów. Nie jest dla mnie jasne, który pakiet ma być używany w jakich scenariuszach. Czy ktoś może wnieść do tego więcej światła?Microsoft.Net.Http kontra Microsoft.AspNet.WebApi.Client

+1

Do down-voter: Chcesz wyjaśnić, co jest nie tak z pytaniem ?! – Anil

+0

To jest dobre pytanie. Downvoter tego nie rozumiał. –

Odpowiedz

8

Krótka odpowiedź brzmi tak, użyj Microsoft.AspNet.WebApi.Client.

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

Ten pakiet dodaje wsparcie dla formatowania i negocjacji zawartości do System.Net.Http. Obejmuje obsługę zakodowanych danych JSON, XML i formularza URL .

Microsoft.AspNet.WebApi.Client faktycznie zależy na Microsoft.Net.Http i rozszerza HttpClient z niektórych więcej funkcji, które prawdopodobnie trzeba mówić do relaksującego usługi takie jak ASP.NET Web API (np JSON i XML) wsparcie.

Oba pakiety działają w przestrzeni nazw System.Net.Http i obracają się wokół klasy klucza HttpClient.

Pakiet zawiera zestaw System.Net.Http.Formatting.dll, który dodaje kilka przydatnych metod rozszerzeń do HttpClient i HttpContent (i innych).

Tak na przykład:

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>(); 
} 

Sposób ReadAsAsync jest metoda rozszerzenie, które Microsoft.AspNet.WebApi.Client dodaje na obiekt HttpContent. To automatycznie wykrywa, czy odpowiedzią jest JSON, XML lub formularz URL zakodowany (wyżej wspomniana negocjacja treści), a następnie używa odpowiedniego formatyzatora do dekantalizacji go do twojego mocno wpisanego modelu (w tym przypadku ProductInfo).

Jeśli próbowałeś użyć Microsoft.Net.Http, metoda ReadAsAsync nie byłaby dla ciebie dostępna, a będziesz w stanie odczytać zawartość jako surowe dane, takie jak bajty lub ciągi, i musisz zrób serializowanie/dekompilowanie siebie.

również uzyskać metody rozszerzenie do PUT/POST z powrotem do służby w JSON lub XML bez konieczności zrobić sobie pytanie:

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

Kluczowe rozszerzenia Microsoft.AspNet.WebApi.Client:

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