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

 

僅此,以作記錄。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM