Простая публикация и получение C# WPF - PullRequest
0 голосов
/ 06 августа 2020

У меня есть два текстовых поля и кнопка. Я хочу поместить что-то в textBox1, отправить это на сервер и вернуть полученные результаты в textBox2.

Кажется, я не могу понять сокеты достаточно хорошо, чтобы выполнить sh это. У меня есть адрес и порт.

У кого-нибудь есть супер простая установка для этого? Все, что я нашел, включает классы, для которых я даже не могу найти пространства имен.

Спасибо!

1 Ответ

0 голосов
/ 06 августа 2020

Вот простое решение для получения данных с веб-сайта:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...