Załóżmy, że napisaliśmy serwis, który zwraca nam pewne produkty. Nawigując pod odpowiednie dwa adresy URI pobierzemy odpowiednie zasoby:
- http://localhost/api/products - lista wszystkich produktów
- http://localhost/api/product/1 - odpowiedni produkt
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
}
W celu połączenia się z naszym Web API, musimy skorzystać z klasy HttpClient. Nasz cały kod może wyglądać następująco:
Metoda, dzięki której tworzymy sobie połączenie do naszego serwisu REST:
private HttpClient GetClient(string mediaType)
{
string baseUri = @baseAddress + port;
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = false
};
handler.Credentials = new NetworkCredential("username", "password");
HttpClient httpClient = new HttpClient(handler);
httpClient.BaseAddress = new Uri(baseUri);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType));
return httpClient;
}
Metoda dzięki której pobieramy produkt:
private async void Get()
{
using (var client = GetClient("application/json"))
{
HttpResponseMessage response = await client.GetAsync("/api/Products/1");
if (response.IsSuccessStatusCode)
{
Product product = await response.Content.ReadAsAsync();
//Do something with product
}
}
}
Metoda za pomocą której dodajemy nasz produkt:
private async void Post()
{
using(var client = GetClient("application/json"))
{
var message = await client.PosAsJsonAsync("api/products",
new Product
{
Id=111,
Name="Product 111 name",
Description = "Product 111 description",
Price=222,22
});
}
}
Metoda za pomocą której usuwamy nasz produkt:
private void Delete()
{
using(var client = GetClient("application/json"))
{
var message = await Client.DeleteAsync("api/products/1");
}
}
Należy pamiętać, że metoda "ReadAsAsync
Bardzo interesujące. Pozdrawiam serdecznie.
OdpowiedzUsuń