WinフォームコールWEBAPIプログラム

コールAPIクラスを作成するためのWinFormフォーム
/// <要約> ///コールAPIが返すJSON /// </要約> /// <PARAM NAME = "URL"> APIアドレス</ param>の /// <をparam nameは= "jsonstr">受信パラメータ</ param>の /// <PARAM = "タイプ"名>タイプ</ param>の /// <戻り値> </戻り値> 公共の静的な文字列HttpPost(URL文字列、文字列のjsonstr) //、String型 { HttpWebRequestのリクエスト=(HttpWebRequestの)WebRequest.Create(URL); // -パラメータが必要にカプセル化される request.CookieContainer CookieContainer新しい新=(); // HTTPヘッダ送信される次の request.Referer = "" ; //リクエスト。ContentTypeを= "text / xmlで"; 要求。ヘッダ[ "言語を受け入れ"] = "ZH-CN、ZH; Q = 0。"; Request.Headers [ "同意-文字セット"] = "GBK、UTF-8; Q = 0.7、*; Q = 0.3。"; request.UserAgent =「User--エージェント:Mozillaの/ 5.0(Windows NTの5.1)のAppleWebKit / 535.1(ヤモリ様KHTML)クローム/ 14.0.835.202サファリ/ 535.1「; ; request.KeepAlive =真の 場合、上記// HTTPヘッダが、それは、次の2つの追加されなければならないことができる アプリケーション/ X-WWW request.ContentType =」 -form-をURLエンコード「; エンコーディングエンコーディング= Encoding.UTF8; //カスタムコーディングのウェブサイトによると request.Method =」「を得る; // -必要がポスト行の前に変更を取得する 文字列postDataStr; //ストリームrequestStream = request.GetRequestStreamを( ); IF(jsonstr =) "!" { postDataStr = jsonstr; // -このような"&ARG1 ARG2 =アルギニン= ARG2"の形態で包装ニーズ、 バイト[] = POSTDATA encoding.GetBytes(postDataStr); //送信さpostDataStrデータ、 //request.ContentLength = postData.Length ; //このプロパティ設定への書き込みを許可されていない 。//requestStream.Write(postData、0、postData.Length) } HttpWebResponseの応答=(HttpWebResponseの)request.GetResponse(); //リモートサーバはエラーを返し(405)ではありません(500)内部サーバーエラー:allowedMethod /リモートサーバーは、エラーを返します。 ResponseStream = response.GetResponseStreamストリーム(); StreamReaderをStreamReaderをStreamReaderを新しい新=(responseStream、エンコーディング); 文字列retString StreamReader.ReadToEnd =(); streamReader.Close()。 responseStream.Close(); retStringを返します。 }

 APIプログラム

システムを使用しました。
System.Collections.Genericを使用しました。
System.Linqのを使用しました。
System.Threading.Tasksを使用しました。

名前空間webApi_test2.Models 
{ 
   //方法接口
    パブリックインターフェイスIUsersRepository 
    { 
        タスク<ユーザー> GETUSER(文字列ID)。
        タスク<整数>は、deleteuser(文字列ID); 
        タスク<整数> AddAUsers(ユーザーアイテム); 
        タスク<整数> UpdateUsers(ユーザーアイテム); 
    } 
}

  

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

 

仅此,以作记录。

 

 

 

 

おすすめ

転載: www.cnblogs.com/A-R-E-S/p/10986351.html