首先,创建一个通讯实体类

     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);
            }

 

posted on 2017-09-06 17:31  EM_C  阅读(482)  评论(0)    收藏  举报