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
Odpowiedz
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
Uważam, że WebApi lepsze niż Http. https://msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx
Do down-voter: Chcesz wyjaśnić, co jest nie tak z pytaniem ?! – Anil
To jest dobre pytanie. Downvoter tego nie rozumiał. –