2015-07-07 14 views
5

.NET uygulamasından REST hizmetine erişmem gerekiyor ve bu iki paketin herhangi biriyle yapılabilir. Hangi senaryoların hangi paketlerde kullanılacağı açık değildir. Buna daha fazla ışık getiren var mı?Microsoft.Net.Http vs Microsoft.AspNet.WebApi.Client

+1

Aşağı seçmen için: Sorunun nesi yanlış olduğunu araştırmak ister misiniz ?! – Anil

+0

Bu iyi bir soru. Downvoter bunu anlamadı. –

cevap

8

Kısa yanıt evet, Microsoft.AspNet.WebApi.Client kullanın.

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

Bu paket System.Net.Http için biçimlendirme ve içerik müzakere için destek ekler. JSON, XML ve form URL kodlanmış veriler için destek içerir.

Microsoft.AspNet.WebApi.Client aslında Microsoft.Net.Http üzerine bağlıdır ve bu tür ASP.NET Web API gibi bir sığınakta hizmeti konuşmam gerek olasılıkla biraz daha içki özellikler (örneğin JSON ve XML desteği) ile HttpClient uzanır.

Her iki paket de System.Net.Http ad alanında çalışır ve HttpClient sınıfının etrafında döner.

Microsoft.AspNet.WebApi.Client paketi, HttpClient ve HttpContent (ve diğerleri) için bazı kullanışlı uzantı yöntemleri ekleyen System.Net.Http.Formatting.dll derlemesini içerir. Yani, örneğin

:

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 yöntem Microsoft.AspNet.WebApi.ClientHttpContent nesne üzerine ekleyen bir uzantısı bir yöntemdir. Bu, yanıt JSON, XML veya kodlanmış form URL'si (daha önce bahsedilen içerik anlaşması) ise otomatik olarak çözülür ve daha sonra güçlü biçimlendirilmiş modelinize (bu durumda, ProductInfo) serileştirilmesi için karşılık gelen biçimlendiriciyi kullanır.

Yalnızca Microsoft.Net.Http kullanmayı denediyseniz, ReadAsAsync yöntemi sizin için uygun olmaz ve yalnızca içeriği bayt veya dize gibi ham veriler olarak okuyabilir ve seri hale getirme/serileştirme işlemini kendiniz yapın.

Ayrıca yapmak zorunda kalmadan geri JSON veya XML hizmetine/POST PUT uzantısı yöntemleri almak kendin:

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

Anahtar Microsoft.AspNet.WebApi.Client uzantıları:

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

İlgili konular