WinForm窗体创建的调用api的类 /// <summary> /// 调用api返回json /// </summary> /// <param name="url">api地址</param> /// <param name="jsonstr">接收参数</param> /// <param name="type">类型</param> /// <returns></returns> public static string HttpPost(string url, string jsonstr)//,string type { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //--需要封装的参数 request.CookieContainer = new CookieContainer(); //以下是发送的http头 request.Referer = ""; //request.ContentType = "text/xml"; request.Headers["Accept-Language"] = "zh-CN,zh;q=0."; request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3"; request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"; request.KeepAlive = true; //上面的http头看情况而定,但是下面俩必须加 request.ContentType = "application/x-www-form-urlencoded"; Encoding encoding = Encoding.UTF8;//根据网站的编码自定义 request.Method = "get"; //--需要将get改为post才可行 string postDataStr; //Stream requestStream = request.GetRequestStream(); if (jsonstr != "") { postDataStr = jsonstr;//--需要封装,形式如“arg=arg1&arg2=arg2” byte[] postData = encoding.GetBytes(postDataStr);//postDataStr即为发送的数据, //request.ContentLength = postData.Length; //写入后不允许设置此属性 //requestStream.Write(postData, 0, postData.Length); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //远程服务器返回错误: (405) 不允许的方法/远程服务器返回错误: (500) 内部服务器错误。 Stream responseStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, encoding); string retString = streamReader.ReadToEnd(); streamReader.Close(); responseStream.Close(); return retString; }
API程序
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace webApi_test2.Models { //方法接口 public interface IUsersRepository { Task<Users> GetUser(string id); Task<int> DeleteUser(string ID); Task<int> AddAUsers(Users item); Task<int> UpdateUsers(Users item); } }
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace webApi_test2.Models { //实体类 public class Users { public string UserID { get; set; } public string Pwd { get; set; } public string UserName { get; set; } public string Remark { get; set; } public DateTime CreatedOn { get; set; } public DateTime LastLoginTime { get; set; } } }
using Ivony.Data; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace webApi_test2.Models { //接口的实现 (接口的实现方法根据框架的结构自行修改) public class UsersRepository : IUsersRepository { //查询 public async Task<Users> GetUser(string id) { using (Db.UseDatabase("default")) { var x = Db.T($"select * from Users where UserID={id}").ExecuteEntityAsync<Users>(); return await x; } } //删除 public async Task<int> DeleteUser(string ID) { using (Db.UseDatabase("default")) { return await Db.T($"delete from Users where UserID={ID}").ExecuteNonQueryAsync(); } } //添加 public async Task<int> AddAUsers(Users UsersItem) { using (Db.UseDatabase("default")) { return await Db.T($"insert into Users(UserID,Pwd,UserName,CreatedOn) values({UsersItem.UserID},{UsersItem.Pwd},{UsersItem.UserName},{UsersItem.CreatedOn})").ExecuteNonQueryAsync(); } } //修改 public async Task<int> UpdateUsers(Users UserItem) { using (Db.UseDatabase("default")) { return await Db.T($"update Users set Pwd={UserItem.Pwd},UserName={UserItem.UserName},CreatedOn={UserItem.CreatedOn} where UserID={UserItem.UserID}").ExecuteNonQueryAsync(); } } } }
创建Api控制器
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; using Ivony.Data; using Microsoft.AspNetCore.Mvc; using webApi_test2.Models; namespace webApi_test2.Controllers { [Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { //接口的依赖注入根据自己框架的要求进行注入 本框架使用自己的源,与其他稍有不同 private IUsersRepository _Repository { get; set; } public ValuesController(IUsersRepository Repository) { _Repository = Repository; } //GET api/values [HttpGet] public ActionResult<IEnumerable<string>> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 [HttpGet("{id}")] public ActionResult<string> Get(int id) { return "value"; } // POST api/values [HttpPost] public void Post([FromBody] string value) { } // PUT api/values/5 [HttpPut("{id}")] public void Put(int id, [FromBody] string value) { } //删除 // DELETE api/values/5 [HttpGet("Delete")] public int Delete(string id) { try { //UsersRepository ur = new UsersRepository(); //var x = ur.DeleteUser(id); var x = _Repository.DeleteUser(id); return x.Result; } catch(Exception ex) { throw; } } //修改 [HttpGet("UpdateUsers")] public async Task<int> UpdateUsers(string UserID, string UserName, string Pwd, string CreatedOn)/*Users UserItem*/ { Users UserItem = new Users(); try { //初始化赋值 UserItem.UserID = UserID; UserItem.Pwd = Pwd; UserItem.UserName = UserName; UserItem.CreatedOn = Convert.ToDateTime(CreatedOn); //UsersRepository ur = new UsersRepository(); //var x = ur.UpdateUsers(UserItem); var x = _Repository.UpdateUsers(UserItem); return await x; } catch (Exception) { throw; } } //查询 根据UserID查询 [HttpGet("GetUser")] public async Task<Users> GetUser(string UserID) { try { //UsersRepository ur = new UsersRepository(); //var x = ur.GetUser(UserID); var x = _Repository.GetUser(UserID); return await x; //return await _Repository.GetUser(UserID); } catch (Exception) { throw; } } //添加 //GET:/api/values/Get [HttpGet("AddUsers")] public async Task<int> AddUsers(string UserID, string UserName, string Pwd, string CreatedOn)/*Users Item*/ { Users UserItem = new Users(); try { UserItem.UserID = UserID; UserItem.Pwd = Pwd; UserItem.UserName = UserName; UserItem.CreatedOn = Convert.ToDateTime(CreatedOn); //UsersRepository ur = new UsersRepository(); //var x = ur.AddAUsers(UserItem); var x = _Repository.AddAUsers(UserItem); return await x; } catch (Exception) { throw; } } } }
依赖注入需要的类
using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Nebula.Hosting; using webApi_test2.Models; [assembly: HostInitialize(typeof(webApi_test2.Models.ServiceInitialize))]//webApi_test2.Models.ServiceInitialize 文件位置 namespace webApi_test2.Models { internal class ServiceInitialize { public static void Initialize(IServiceCollection services) { services.AddSingleton<IUsersRepository, UsersRepository>(); } } }
WinForm调用api程序方法来源于
https://www.cnblogs.com/mq0036/p/10437993.html
仅此,以作记录。
原文地址:https://www.cnblogs.com/A-R-E-S/p/10986351.html
时间: 2024-10-14 09:36:25