Ежедневник IT-ка
133 subscribers
22 photos
4 videos
1 file
43 links
Программируем на практике!!
По вопросам по поводу проектов: @vladimir_dzen
Download Telegram
​​Пример использования HttpClient для работы с запросами:

1. Подключаем пространство имён.

using Newtonsoft.Json;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.IO;

2. Создаём класс.

 public class Poster
 {
  public int Id { get; set; }
  public int MovieId { get; set; }
  public string Name { get; set; }
 }

3. Создаем новый экземпляр класса.

private static HttpClient _httpClient = new HttpClient();

4. Устанавливаем свойства текущ.-их методов.

_httpClient.BaseAddress = new Uri("http://localhost:987456");
_httpClient.Timeout = new TimeSpan(0, 0, 30);
_httpClient.DefaultRequestHeaders.Clear();

5. Создаём асинхронный метод(для того, чтобы не блокировать основной поток).

 private async Task<string> GetResourceThroughHttpRequestMessage()
{

   5.1. Создаем новый экземпляр класса.

   var request = new HttpRequestMessage(
    HttpMethod.Get,
    $"api/books/6e0drwqt/posters/{Guid.NewGuid()}");

   5.2. Добавляем тип контента(Content-Type) в   заголовок.

    request.Headers.Accept.Add(new  MediaTypeWithQualityHeaderValue("application/json"));

   5.3. Делаем асинхронный запрос к серверу.

   using (var response = await _httpClient.SendAsync(request))
   {

    5.4. Проверяем полученный код статуса запроса.

    response.EnsureSuccessStatusCode();

    5.5. Читаем полученный ответ.

    var stream = await response.Content.ReadAsStreamAsync();
    using (var streamReader = new StreamReader(stream))
    {
     using (var jsonTextReader = new JsonTextReader(streamReader))
     {
      var jsonSerializer = new JsonSerializer();

      5.6. Устанавливаем значения из Json в объект класса Poster.

      var poster = jsonSerializer.Deserialize<Poster>(jsonTextReader);

      5.7. Получаем значение одного из свойств объекта класса Poster.

      return poster.Name;
     }
    }
   }
}

#HttpClient, #Csharp