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.ReadAsAsyncMetoda za pomocą której dodajemy nasz produkt:(); //Do something with product } } }
private async void Post() { using(var client = GetClient("application/json")) { var message = await client.PosAsJsonAsyncMetoda za pomocą której usuwamy nasz produkt:("api/products", new Product { Id=111, Name="Product 111 name", Description = "Product 111 description", Price=222,22 }); } }
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ń