• winForm调用WebApi程序


            ///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"))//确定数据库名称   (此处名称为apollo设置,根据需要自行修改)
                {
                    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
    

     

    仅此,以作记录。

     

     

     

  • 相关阅读:
    JavaScript监听、设置全部ajax访问属性获取返回值(状态码)
    如何在Vue项目中使用vw实现移动端适配
    git 常用命令金字教程
    移动web开发之像素和DPR详解
    小程序-微信开发者工具使用
    小程序开发框架:Taro(一)基础篇
    vscode代码自动补全失效
    JS、C#编码解码
    PHP网页缓存技术
    ajaxfileupload回到json带<pre>
  • 原文地址:https://www.cnblogs.com/A-R-E-S/p/10986351.html
Copyright © 2020-2023  润新知