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
- 1. System.Net.Http vs Microsoft.Net.Http
- 2. Obecny status System.Net.Http vs. Microsoft.Net.Http
- 3. Czy mogę zainstalować klienta ravendb razem z Microsoft.AspNet.WebApi.Client?
- 4. Czy możemy użyć Microsoft.AspNet.WebApi.Client z aplikacji ASP.NET Core?
- 5. Angular.js kontra Knockout.js kontra Backbone.js
- 6. VirtualBox - Klon kontra Snapshot kontra Kopia zapasowa
- 7. Porównanie repozytorium kontra dostawca kontra usługa
- 8. APL kontra A w porównaniu z J kontra K?
- 9. Azure AD kontra Azure AD B2C kontra Azure AD B2B
- 10. Skojarzone kontra delegowane, OAuth kontra OpenID Connect vs SAML
- 11. UiBinder - HTMLPanel kontra div
- 12. Modernizacja kontra HTML shiv
- 13. Podstawowy klucz kontra kluczowego
- 14. "size_t" kontra "container :: size_type"
- 15. Guice kontra AspectJ
- 16. Zend_Validate_EmailAddress kontra filter_var (..., FILTER_VALIDATE_EMAIL)
- 17. StreamReader kontra BinaryReader?
- 18. Zadania kontra ThreadPool
- 19. Moduły NodeJS kontra klasy
- 20. Tiggr kontra Application Craft
- 21. Cassandra kontra Riak
- 22. Singleton kontra Intents (Android)
- 23. ruby regex skanować kontra = ~
- 24. System.Windows.MessageBox kontra System.Windows.Forms.MessageBox
- 25. XML kontra twardy interfejs?
- 26. Lamina kontra Storm
- 27. Android - Aktywność kontra FragmentActivity?
- 28. Akamai kontra CloudFront
- 29. SmalltalkHub kontra SqueakSource3
- 30. ExtJs Store.Load() kontra Model.Load()
Do down-voter: Chcesz wyjaśnić, co jest nie tak z pytaniem ?! – Anil
To jest dobre pytanie. Downvoter tego nie rozumiał. –