c# EasyHttp (http请求库)

介绍:EasyHttp

      EasyHttp http请求类库,支持net4.0++
      github:https://github.com/EasyHttp/EasyHttp

使用:

环境:net4.0 、EasyHttp(1.7版本)

准备工作:准备webapi调用接口

public class UnityController : ApiController
    {
        private IUserService _userService = null;
        public UnityController(IUserService userService)
        {
            _userService = userService;
        }

        // GET api/<controller>
        public IEnumerable<Student> Get()
        {
            //return UnityFactoryUtil.GetServer<IUserService>().GetList();
            return _userService.GetList();
        }



        // POST api/<controller>
        public string Post([FromBody]string value)
        {
            return value;
        }

        [Route("PostTest")]
        public string PostTest([FromBody]Student stu)
        {
            return Newtonsoft.Json.JsonConvert.SerializeObject(stu);
        }


    }





    public class FirstController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

         // GET api/<controller>/5
        [AllowAnonymous]//不使用验证
        public string Get(int id)
        {
            return "value";
        }

        [AllowAnonymous]//不使用验证
        [Route("GetById")]
        public string GetById([FromUri] Student stu)
        {
            return "value";
        }

    }


    [RoutePrefix("api/File")]
    public class FileController : ApiController
    {
        /// 上传文件
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public string UploadFiles()
        {
            string result = "";
            var path=System.Web.Hosting.HostingEnvironment.MapPath("~/Upload");
            HttpFileCollection files = HttpContext.Current.Request.Files;
            if (files != null && files.Count > 0)
            {
                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFile file = files[i];
                    string filename = file.FileName;
                    string FileName = Guid.NewGuid().ToString()+Path.GetExtension(filename); ;
                    string FilePath = path+"\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\";
                    DirectoryInfo di = new DirectoryInfo(FilePath);
                    if (!di.Exists)
                    {
                        di.Create();
                    }
                    try
                    {
                        file.SaveAs(FilePath + FileName);
                        result ="上传成功";
                    }
                    catch (Exception ex)
                    {
                        result = "上传文件写入失败:" + ex.Message;
                    }
                }
            }
            else
            {
                result = "上传的文件信息不存在!";
            }

            return result;
        }


        /// <summary>
        /// 下载文件
        /// </summary>
        [HttpGet]
        public HttpResponseMessage DownloadFile()
        {
            string fileName = "image.jpg";
            string filePath = HttpContext.Current.Server.MapPath("~/Upload/") + "image.jpg";
            FileStream stream = new FileStream(filePath, FileMode.Open);
            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
            response.Content = new StreamContent(stream);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = HttpUtility.UrlEncode(fileName)
            };
            response.Headers.Add("Access-Control-Expose-Headers", "FileName");
            response.Headers.Add("FileName", HttpUtility.UrlEncode(fileName));
            return response;
        }
    }

 http请求:

            //GET(无参)
            {
                var http = new HttpClient();
                http.Request.Accept = HttpContentTypes.ApplicationJson;
                //http.Request.ContentType = "application/json";
                http.Request.SetBasicAuthentication("admin", "admin");
                var response = http.Get("https://localhost:44370/api/First");
                string responseValue = response.RawText;
                //var dyncValue=response.DynamicBody;

            }
            //GET(单个传参)
            {
                var http = new HttpClient();
                http.Request.Accept = HttpContentTypes.ApplicationJson;
                //http.Request.ContentType = "application/json";
                http.Request.SetBasicAuthentication("admin", "admin");

                var response = http.Get("https://localhost:44370/api/First?id=5");
                string responseValue = response.RawText;
                //T obj=response.StaticBody<T>();
                //var dyncValue=response.DynamicBody;

            }
            //GET(实体传参)
            {
                var http = new HttpClient();
                http.Request.Accept = HttpContentTypes.ApplicationJson;
                //http.Request.ContentType = "application/json";
                http.Request.SetBasicAuthentication("admin", "admin");

                Student stu = new Student
                {
                    AGE = 25,
                    ID = 1,
                    NAME = "czj",
                    PWD = 123456
                };

                var response = http.Get("https://localhost:44370/api/First/GetById", stu);
                string responseValue = response.RawText;
                //T obj=response.StaticBody<T>();
                //var dyncValue=response.DynamicBody;

            }
            //POST(单个参数)
            {
                var http = new HttpClient();
                http.Request.SetBasicAuthentication("admin", "admin");
                //http.Request.Uri = "https://localhost:44370/api/Unity";
                Dictionary<string, object> dic = new Dictionary<string, object>();
                dic[""] = "value";
                var response = http.Post("https://localhost:44370/api/Unity", dic, EasyHttp.Http.HttpContentTypes.ApplicationXWwwFormUrlEncoded);
                string responseValue = response.RawText;
            }
            //POST(参数为实体/dynamic)
            {
                var http = new HttpClient();
                http.Request.SetBasicAuthentication("admin", "admin");
                Student stu = new Student
                {
                    AGE = 25,
                    ID = 1,
                    NAME = "czj",
                    PWD = 123456
                };
                var response = http.Post("https://localhost:44370/api/Unity/PostTest", stu, EasyHttp.Http.HttpContentTypes.ApplicationJson);
                var responseValue = response.DynamicBody;
                Student retStu = Newtonsoft.Json.JsonConvert.DeserializeObject<Student>(responseValue);
            }

            //上传文件
            {
                string uri = "https://localhost:44370/api/File/UploadFiles";
                var http = new HttpClient();

                var imagePath = AppDomain.CurrentDomain.BaseDirectory + @"File\image.jpg";

                List<FileData> list = new List<FileData>();
                FileData file = new FileData
                {
                    FieldName = "image.jpg",
                    Filename = imagePath
                };
                list.Add(file);
                var response = http.Post(uri, null, list);
                var value = response.RawText;
            }
            //下载文件
            {
                string uri = "https://localhost:44370/api/File/DownloadFile";
                var http = new HttpClient();

                var imagePath = AppDomain.CurrentDomain.BaseDirectory + $@"File\{Guid.NewGuid().ToString()}.jpg";
                var response = http.GetAsFile(uri, imagePath);
            }

 

 

扩展:c# RestSharp(http请求):https://blog.csdn.net/czjnoe/article/details/106482422

demo:https://github.com/czjnoe/GitHubDemo/tree/master/EasyHttpDemo

github下载慢参考:https://blog.csdn.net/czjnoe/article/details/106321174

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
通信相关 1.C#HttpHelper,Httpwebrequest,请求时无视编码,无视证书,无视Cookie,网页抓取 主要是实现了HTTP协议的GET|POST请求时的无视编码,无视证书,设置代理,自动获取Cookie的功能。 访问数据相关 1.SqlHelper类 使用C#实现对Sql数据的操作,执行存储过程,Sql语句,返回影响行数,返回DateTable,DataSet,DataReader,以及表集等方法。实现多个数据的切换功能。功能强大,希望大家喜欢 2.一个操作Sql2005数据的类(备份,还原,分离,附加,添加删除用户等操作) 这主要是为了让大家练手的,他使用C#代 码的方法实现了对数据的 备份,还原,分离,附加,添加和删除用户等操作 3.DbHelperMySQL类 数据访问抽象基础类 主要是访问Mysql数据主要实现如下功能 1.得到最大值 2.是否存在 3.是否存在(基于MySqlParameter) 4.执行SQL语句,返回影响的记录数 5.执行MySql和Oracle滴混合事务,执行多条SQL语句,实现数据事务。 6.执行带一个存储过程参数的的SQL语句。 7.执行带一个存储过程参数的的SQL语句。 8.向数据里插入图像格式的字段(和上面情况类似的另一种实例) 9.执行一条计算查询结果语句,返回查询结果(object)。 10.执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close ) 11.执行查询语句,返回DataSet,执行SQL语句,返回影响的记录数,执行多条SQL语句,实现数据事务。 执行多条SQL语句,实现数据事务。 12.执行多条SQL语句,实现数据事务。 13.执行多条SQL语句,实现数据事务。 14.执行一条计算查询结果语句,返回查询结果(object)。 15.执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close ) 16.执行查询语句,返回DataSet等等。 复制代码 4.DbHelperOleDb类 1.数据访问基础类(基于OleDb)Access数据, 2.得到最大值;是否存在;是否存在(基于OleDbParameter); 3.执行SQL语句,返回影响的记录数;执行多条SQL语句,实现数据事务; 4.执行带一个存储过程参数的的SQL语句; 5.向数据里插入图像格式的字段(和上面情况类似的另一种实例); 6.执行一条计算查询结果语句,返回查询结果(object); 7.执行查询语句,返回OleDbDataReader; 8.执行查询语句,返回DataSet; 9.执行SQL语句,返回影响的记录数; 10.执行多条SQL语句,实现数据事务; 11.执行一条计算查询结果语句,返回查询结果(object); 12.执行查询语句,返回OleDbDataReader;执行查询语句,返回DataSet; 复制代码 5.DbHelperOra类 1.数据访问基础类(基于Oracle),主要是用来访问Oracle数据的。 2.得到最大值;是否存在;是否存在(基于OracleParameter ); 3.执行SQL语句,返回影响的记录数; 4.执行多条SQL语句,实现数据事务; 5.执行带一个存储过程参数的的SQL语句; 6.向数据里插入图像格式的字段(和上面情况类似的另一种实例); 7.执行一条计算查询结果语句,返回查询结果(object); 8.执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ); 9.执行查询语句,返回DataSet; 10.执行SQL语句,返回影响的记录数; 11.执行多条SQL语句,实现数据事务; 12.执行一条计算查询结果语句,返回查询结果(object); 13.执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ); 14.执行查询语句,返回DataSet; 15.执行存储过程 返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ); 16.执行存储过程;构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值); 17.执行存储过程,返回影响的行数; 18.创建 OracleCommand 对象实例(用来返回一个整数值) 复制代码 6.DbHelperSQLite类 [code=csharp] 1.数据访问基础类(基于SQLite),主要是用来访问SQLite数据的。 2.得到最大值;是否存在;是否存在(基于SQLiteParameter); 3. 执行SQL语句,返回影响的记录数 4.执行多条SQL语句,实现数据事务。 5.执行带一个存储过程参数的的SQL语句。 6.向数据里插入图像格式的字段(和上面情况类似的另一种实例) 7.执行一条计算查询结果语句,返回查询结果(object)。 8.执行查询语句,返回SQLiteDataReader 9.执行查询语句,返回DataSet 10.执行SQL语句,返回影响的记录数 11. 执行多条SQL语句,实现数据事务。 12. 执行一条计算查询结果语句,返回查询结果(object)。 13.执行查询语句,返回SQLiteDataReader 14.执行查询语句还参数,返回DataSet[/code] 7.DbHelperSQLP类 8.DbHelperSQL类 9.OracleHelper类
要在C#中发起HTTP请求,可以使用HttpWebRequest类或HttpClient类。使用HttpWebRequest类时,可以按照以下步骤进行操作: 1. 创建一个HttpWebRequest实例,并设置请求的URL: ``` HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); ``` 2. 设置请求的方法(GET、POST等): ``` request.Method = "GET"; ``` 3. 设置请求头(可选): ``` request.Headers.Add("key", "value"); ``` 4. 发送请求并获取响应: ``` using (WebResponse response = request.GetResponse()) { // 读取响应数据 using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { string content = reader.ReadToEnd(); // 对响应数据进行处理 // ... } } ``` 另外,还可以使用HttpClient类来发起HTTP请求,代码示例如下: ```csharp using (HttpClient client = new HttpClient()) { HttpResponseMessage response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); // 对响应数据进行处理 // ... } } ``` 以上是两种常用的C#发起HTTP请求的方法。可以根据具体需求选择其中一种来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C#实现发送简单HTTP请求的方法](https://download.csdn.net/download/weixin_38688352/12806593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C# 发送http网络请求](https://blog.csdn.net/weixin_44517477/article/details/121725560)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [C#发起http的GET/POST请求并处理响应,及其函数封装](https://blog.csdn.net/qq_40649350/article/details/118682995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值