首页 > 其他分享 >HTTP协议——请求封装

HTTP协议——请求封装

时间:2024-07-17 15:29:25浏览次数:8  
标签:封装 请求 GET data HttpType HTTP type string

请求封装

在我们使用请求的使用避免不了多次请求,这样代码的重复率就会变高,我们可以将请求进行封装进而调用,不仅提高了代码的重用性也提高了代码的质量

封装

    internal class Http
    {
        /// <summary>
        /// 请求类型
        /// </summary>
        public enum HttpType
        {
            GET,
            POST, 
            PUT,
            DELETE,
            HEAD,
    
        }
    
        /// <summary>
        /// 发送请求的方法 返回字符串类型
        /// URL 请求地址
        /// type: 请求类型 默认值是GET
        /// </summary>
        /// <param name="url">请求地址</pramas>
        /// <param name="type">请求类型,默认值是GET</pramas>
        /// <param name="data">请求数据</param>
        /// <param name="isjson">请求内容类型</param>
        /// <returns>字符串类型</returns>
        public static string Send(string url,HttpType type = HttpType.GET,string data = "",bool isjson = false)
        {
            WebRequest request = WebRequest.Create(url);
            request.Method = type.ToString();
            if (type == HttpType.POST || type == HttpType.PUT)
            {
                // 设置请求体内容类型
                // 如果isJson == true 证明传递数据是json格式 设置请求体从内容类型为application/json
                // 如果isJson == false 证明传递数据不是json格式 设置请求体内容类型为application/x-www-form-urlencoded
                request.ContentType = isjson ==true? "application/json" : "application/x-www-form-urlencoded";
                Stream s = request.GetRequestStream(); // 获取请求数据流
                byte[] bs = Encoding.UTF8.GetBytes(data); // 把data转成字节数组
                s.Write(bs,0,bs.Length); // 请求流添加数据
            }
            WebResponse response = request.GetResponse();
            Stream res = response.GetResponseStream(); // 响应数据流
            StreamReader sr = new StreamReader(res);
            string resData = sr.ReadToEnd();
    
            return resData;
        }
    
    
        // 异步的请求
        public static Task<string> SendAsync(string url, HttpType type = HttpType.GET, string data = "", bool isjson = false)
        {
            return Task.Run(() =>
            {
                return Send(url,type,data,isjson);
            });
        }
    }

使用

    Console.WriteLine("=======================异步POST JSON格式===================");
    string s= await Http.SendAsync("http://192.168.113.74:3000/register", Http.HttpType.POST, "{\"name\":\"呕吐曼\",\"psw\":\"123456\"}", true);
    Console.WriteLine(s);

标签:封装,请求,GET,data,HttpType,HTTP,type,string
From: https://blog.csdn.net/qq_3517289697/article/details/140495491

相关文章

  • HTTP协议——响应头和响应体详情
    HTTP协议-响应头HTTP协议响应头用于向客户端传递一些额外的信息,‌以控制或说明响应的方式、‌内容和缓存等。‌HTTP协议的响应头是在HTTP协议中用于描述服务器响应的元数据,‌它是服务器在响应客户端请求时发送给客户端的一部分响应信息。‌响应头包含了服务器的相关配置和响......
  • HTTP协议——HttpClient请求类
    HttpClient请求类在C#中,HttpClient类是.NETFramework提供的一个用于发送HTTP请求的第三方库。它不是.NETFramework的核心部分,因此可以说HttpClient请求是第三方的。使用 HttpClient类发起GET请求  privateasyncvoidbutton1_Click(objectsender,EventArgse) ......
  • LM2733YMF/NOPB 封装 SOT23-5 丝印S52B DC-DC电源芯片
    LM2733YMF/NOPB规格信息:制造商:TexasInstruments产品种类:开关稳压器RoHS:是安装风格:SMD/SMT封装/箱体:SOT-23-5输出电压:3Vto40V输出电流:1.5A输出端数量:1Output最大输入电压:14V拓扑结构:Boost开关频率:600kHz最小工作温度:-40C最大工作温度:+......
  • vue3 封装svg图标
    安装插件npmivite-plugin-svg-icons1.修改 vite.config.jsimport{resolve}from'path'import{createSvgIconsPlugin}from'vite-plugin-svg-icons';exportdefaultdefineConfig({  plugins:[    vue(),    createSvgIconsPlugin({......
  • 0基础学python-15:封装、继承和多态
    目录前言 一、封装(Encapsulation)私有变量: 二、继承(Inherit) 三、多态(Polymorphism)总结前言        封装、继承和多态是面向对象编程的三大基本特性,它们与面向对象编程(OOP)密切相关。  一、封装(Encapsulation)概念:封装指的是将数据(属性)和操作数据的方法......
  • C# Http访问帮助类
    1publicclassHttpHelper2{3///<summary>4///HttpWebRequest通过Post5///</summary>6///<paramname="url">URI</param>7///<paramname="postD......
  • SciTech-EECS-PCB设计- PCB设计-原理图设计 - Schematic library(原理图元器件库)的设
    原理图绘制的“环境参数设置”设置原理图绘制的“环境参数”步骤大体有:在ad软件主界面菜单,选择“File->New->Project”,在创建工程的窗口,看见一个名称为PCB_Project1.PrjPCB的新工程。按照前面所介绍的“添加原理图”的方法,添加名称为“Sheet1.SchDoc”的“原理图文件”。......
  • 《0基础》学习Python——第十四讲__封装、继承、多态
    <封装、继承、多态>一、类和实例解析    1、面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。    2、用class类名......
  • Python爬虫Post请求返回值为-1000
    今天写了一个简单的爬虫程序,为了爬取kfc官网的餐厅数据,代码如下#ajax的post请求--肯德基官网defcreate_request(page):url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx'data={ 'cname':'濮阳', 'pid':'', 'pageIndex':p......
  • js需要同时发起百条接口请求怎么办?--通过Promise实现分批处理接口请求
    如何通过Promise实现百条接口请求?实际项目中遇到需要发起上百条Promise接口请求怎么办?前言不知你项目中有没有遇到过这样的情况,反正我的实际工作项目中真的遇到了这种玩意,一个接口获取一份列表,列表中的每一项都有一个属性需要通过另一个请求来逐一赋值,然后就有了这份封装真......