【发布时间】:2020-08-08 12:01:46
【问题描述】:
我有两个文本框和一个按钮。我想在 textBox1 中放一些东西,然后将其发送到服务器,然后将我得到的结果放回 textBox2。
我似乎无法很好地理解套接字来完成这个。我有一个地址和一个端口。
有没有人有一个超级简单的设置来做到这一点?我发现的所有内容都包括我什至找不到命名空间的类。
谢谢!
【问题讨论】:
我有两个文本框和一个按钮。我想在 textBox1 中放一些东西,然后将其发送到服务器,然后将我得到的结果放回 textBox2。
我似乎无法很好地理解套接字来完成这个。我有一个地址和一个端口。
有没有人有一个超级简单的设置来做到这一点?我发现的所有内容都包括我什至找不到命名空间的类。
谢谢!
【问题讨论】:
这是从网站获取数据的简单解决方案:
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"));
你的标题也要求发布,所以这是你的做法(需要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);
【讨论】: