首先,创建一个通讯实体类
public class DataTest
{
public int ID { get; set; }
public string Data { get; set; }
public DateTime Date {get;set;}
public int Type { get; set; }
public string Mark { get; set; }
}
WebApi创建两个方法,分别是get和post方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace WebApiTest.Controllers
{
public class TestController : ApiController
{
public HttpResponseMessage PostData(DataTest data)
{
HttpResponseMessage msg = null;
try
{
msg = Request.CreateResponse<DataTest>(HttpStatusCode.OK, data); ;
}
catch(Exception ex)
{
msg = Request.CreateResponse<string>(HttpStatusCode.InternalServerError, ex.Message); ;
}
return msg;
}
public HttpResponseMessage GetData()
{
HttpResponseMessage msg = null;
try
{
DataTest data = new DataTest { ID = 1, Data = "this is test", Date = DateTime.Now, Type = 1 };
msg = Request.CreateResponse<DataTest>(HttpStatusCode.OK, data); ;
}
catch (Exception ex)
{
msg = Request.CreateResponse<string>(HttpStatusCode.InternalServerError, ex.Message); ;
}
return msg;
}
}
}
客户端链接,首先是使用Httpclent程序集,管理解决方案的NuGet包,搜索Httpclent安装,
初始化Httpclent:
HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:63193/");//设置服务器IP地址 client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json"));//设置传输报文格式为Json
获取服务器数据:
try
{
HttpResponseMessage msg = client.GetAsync("api/Test/GetData").Result; // Blocking call(阻塞调用)!
if (msg.StatusCode == HttpStatusCode.OK)
{
var data = msg.Content.ReadAsAsync<DataTest>().Result;
string d = string.Format("{0}\t{1};\t{2};\t{3}", data.ID, data.Data, data.Date, data.Mark);
MessageBox.Show(d);
}
else
{
var data = msg.Content.ReadAsAsync<IEnumerable<string>>().Result;
MessageBox.Show(data.ToString());//未知错误或服务器错误
}
}catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
向服务器提交数据:
HttpResponseMessage msg; try { DataTest data = new DataTest { ID = 5, Data = "this is test 5", Date = DateTime.Now, Type = 666, Mark = "tt" }; msg = client.PostAsJsonAsync("api/Test/PostData", data).Result; if (msg.StatusCode == HttpStatusCode.OK) { var d = msg.Content.ReadAsAsync<DataTest>().Result;//获取服务器传输回来的HttpResponseMessage string str = string.Format("提交成功{0}\t{1};\t{2};\t{3} {4}", d.ID, d.Data, d.Date, d.Mark,d.Type); MessageBox.Show(str); } else { var d = msg.Content.ReadAsAsync<IEnumerable<string>>().Result; MessageBox.Show(data.ToString());//未知错误或服务器错误 } } catch (Exception ex) { MessageBox.Show(ex.Message); }
浙公网安备 33010602011771号