private void Form1_Load(object sender, EventArgs e)
{
load();
}
public void load() {
**//url 你的WebApi 地址重要!!!**
Uri uri = new Uri("http://localhost:64632/user/Select");
//WebClient:获取webaapi中的数据。
using (WebClient c = new WebClient())
{
//c.Headers["Type"]:获取数据的方式
c.Headers["Type"] = "GET";
//c.Headers["Accept"]:获取数据的格式
c.Headers["Accept"] = "application/json";
//c.Encoding:数据的编码格式。
c.Encoding = Encoding.UTF8;
//DownloadDataCompleted:在多线程情况下,能进行webApi数据传输。
c.DownloadStringCompleted += (senderobj, es) =>
{
if (es.Result != null)
{
//把webApi之中获取的json数据 序列化成dataTable
var test = JsonConvert.DeserializeObject(es.Result);
//GV绑定dataTable数据
dgvInfo.DataSource = test;
}
};
//把当前webApi地址释放掉。
c.DownloadStringAsync(uri);
}
}
创建WebApi 项目
在Models 创建 Cs_User 实体类
public partial class Cs_User
{
public int UserID { get; set; }
public string UserName { get; set; }
public string UserTel { get; set; }
public string UserSex { get; set; }
}
在WebApi中添加CsUserController控制器
重写控制器名称
[RoutePrefix("user")]
注意 重写控制器名称放在控制器所继承的上方
public class CsUserController : ApiController
下面写查询方法 因为我用的EF 所以查询
[Route(“Select”)] 重写方法名称
[HttpGet] 定义你所请求的方法 GET POST 当然会还有Put 就不列举了
**定义泛型集合 不然WInform 无法显示结果 因为传的为JOSN 数据**
[Route("Select")]
[HttpGet]
public List Tables() {
var row = (from i in db.Cs_User
select i).ToList();
return row;
}
一定要注意 前面WinFrom 的Url 路径 不要写错
WebApi 查询要转出泛型集合 博主不转泛型 前台JSON 无法反序列化赋给GV 从而绑定数据!!!!
简单写了一个添加的方法 传值需在连接后面加上你要 传的值
当前也可以穿实体 数组 后台接受时肯定也就不一样了
private void btnAdd_1_Click(object sender, EventArgs e)
{
string name = this.txtName.Text.Trim();
string tel = this.txtTel.Text.Trim();
string sex = this.txtSex.Text.Trim();
//获取webApi数据的地址。
Uri uri = new Uri("http://localhost:64632/user/AddInfo?name=" + name + "&tel=" + tel + "&sex=" + sex);
//WebClient:获取webaapi中的数据。
using (WebClient c = new WebClient())
{
//c.Headers["Type"]:获取数据的方式
c.Headers["Type"] = "GET";
//c.Headers["Accept"]:获取数据的格式
c.Headers["Accept"] = "application/json";
//c.Encoding:数据的编码格式。
c.Encoding = Encoding.UTF8;
//DownloadDataCompleted:在多线程情况下,能进行webApi数据传输。
c.DownloadStringCompleted += (senderobj, es) =>
{
//es.Result:如果获取的webapi之中的数据不为空,则绑定gv
if (es.Result != null)
{
if (es.Result == "\"OK\"")
{
MessageBox.Show("新增成功");
this.Close();
this.DialogResult = DialogResult.OK;
}
}
};
//把当前webApi地址释放掉。
c.DownloadStringAsync(uri);
}
}
WebApi 添加方法 重写方法 一定要定义参数 无论你传的什么值
[Route("AddInfo")]
[HttpGet]
public string AddInfo(string name, string tel, string sex) {
Cs_User u = new Cs_User();
u.UserName = name;
u.UserTel = tel;
u.UserSex = sex;
db.Cs_User.Add(u);
db.SaveChanges();
return "OK";
}
博主才疏学浅 如有大佬看见 请多多见谅!!!
如有问题联系 qq:1580551707 请备注 谢谢!