Вот простое решение для получения данных с веб-сайта:
private static HttpClient _client = new HttpClient();
public static async Task<string> GetWebsiteDataAsync(Uri fromUri)
{
using (var msg = new HttpRequestMessage(HttpMethod.Get, fromUri))
using (var resp = await _client.SendAsync(msg))
{
resp.EnsureSuccessStatusCode();
return await resp.Content.ReadAsStringAsync();
}
}
Затем вы бы назвали его так:
var websiteData = await GetWebsiteDataAsync(new Uri("https://example.com"));
В заголовке также запрашивается сообщение Post, поэтому вот как вы это сделаете (требуется Newtonsoft.Json
пакет nuget):
public static async Task<TResult> PostObjectToWebsiteAsync<TResult>(
Uri site, object objToPost)
{
using (var req = new HttpRequestMessage(HttpMethod.Post, site))
{
req.Content = new StringContent(JsonConvert.SerializeObject(objToPost),
Encoding.UTF8, "application/json");
using (var resp = await _client.SendAsync(req))
{
resp.EnsureSuccessStatusCode();
using (var s = await resp.Content.ReadAsStreamAsync())
using (var sr = new StreamReader(s))
using (var jtr = new JsonTextReader(sr))
{
return new JsonSerializer().Deserialize<TResult>(jtr);
}
}
}
}
И вы могли бы назвать это так:
var objToPost = new
{
hello = "world",
value = 5
}
var postResonse = await PostObjectToWebsiteAsync<object>(
new Uri("https://example.com"), objToPost);