Winform使用HttpClient调用webApi接口
Winform使用HttpClient调用webApi接口
·
Winform使用HttpClient调用webApi接口
1、右键解决方案=》添加=》新建项目=》选择Windows窗体,填写你的项目名称
2、这是我事先准备好的webapi,如何创建webapi项目可以看我以前的文章
3、这里介绍两种方法,第一个简单直接调用
var httpClient = new HttpClient();
var url = new Uri("http://localhost:45563/api/test/get1");
var response = httpClient.GetAsync(url).Result;
var data = response.Content.ReadAsStringAsync().Result;
textBox1.Text = data;
var url2 = new Uri("http://localhost:45563/api/test/get2?str=你好");
var response2 = httpClient.GetAsync(url2).Result;
var data2 = response2.Content.ReadAsStringAsync().Result;
textBox2.Text = data2;
运行结果如下
4、第二种将http调用相关代码封装成方法,将httpclient对象定义为成员变量,并且给定主机地址,后面传入api时就可以省略
5、将httpclient相关代码封装
/// <summary>
/// Post请求
/// </summary>
/// <typeparam name="TResult">返回参数的数据类型</typeparam>
/// <param name="url">请求地址</param>
/// <param name="data">传入的数据</param>
/// <returns></returns>
public TResult Post<TResult>(string url, object data)
{
try
{
var jsonData = JsonConvert.SerializeObject(data);
HttpContent content = new StringContent(jsonData);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
HttpResponseMessage res = client.PostAsync(url, content).Result;
if (res.StatusCode == System.Net.HttpStatusCode.OK)
{
string resMsgStr = res.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<TResult>(resMsgStr);
return result;
}
else
{
MessageBox.Show(res.StatusCode.ToString());
return default;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return default;
}
}
更多封装方法的写法可以参考:https://www.cnblogs.com/hyx1229/p/15752124.html
6、post1方法需要用到的类
public class TestModel
{
public int Num1 { get; set; }
public int Num2 { get; set; }
public int Sum { get; set; }
}
7、然后就调用我们的方法
var model = new TestModel { Num1 = 1, Num2 = 10 };
var data3 = Post<TestModel>("api/test/post1", model);
textBox3.Text = data3.Sum.ToString();
结果如下
更多推荐
已为社区贡献1条内容
所有评论(0)