c#_Http通讯帮助类

/// <summary>
/// HTTP通信帮助类
/// </summary>
public static class HttpHelper
{
    /// <summary>
    /// 头部信息集合
    /// </summary>
    private static KeyValuePair<string, string> _routeHeaders = new KeyValuePair<string, string>("AgencyType", "2");
    #region 对外调用Http方法
    /// <summary>
    /// HTTPGet通讯
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="data">数据</param>
    /// <param name="headers">票据相关</param>
    /// <returns>结果</returns>
    public static string RouteHttpGet(string url, object data, params KeyValuePair<string, string>[] headers)
    {
        if (headers==null|| headers.Length==0)
        {
            return HttpGet(url, data, _routeHeaders);
        }
        else
        {
            var arr = headers.ToList();
            arr.Add(_routeHeaders);
            return HttpGet(url, data, arr.ToArray());
        }
    }
    /// <summary>
    /// HttpPost通讯
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="data">数据</param>
    /// <param name="headers">票据相关</param>
    /// <returns>结果</returns>
    public static string RouteHttpPost(string url, object data, params KeyValuePair<string, string>[] headers)
    {
        if (headers == null || headers.Length == 0)
        {
            return HttpPost(url, data, _routeHeaders);
        }
        else
        {
            var arr = headers.ToList();
            arr.Add(_routeHeaders);
            return HttpPost(url, data, arr.ToArray());
        }
    }
    /// <summary>
    /// HttpPatch通讯
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="data">数据</param>
    /// <param name="headers">票据相关</param>
    /// <returns>结果</returns>
    public static string RouteHttpPatch(string url, object data, params KeyValuePair<string, string>[] headers)
    {
        if (headers == null || headers.Length == 0)
        {
            return HttpPatch(url, data, _routeHeaders, _routeHeaders);
        }
        else
        {
            var arr = headers.ToList();
            arr.Add(_routeHeaders);
            return HttpPatch(url, data,arr.ToArray());
        }      
    }
    /// <summary>
    /// HttpDelete通讯
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="data">数据</param>
    /// <param name="headers">票据相关</param>
    /// <returns>结果</returns>
    public static string RouteHttpDelete(string url, object data, params KeyValuePair<string, string>[] headers)
    {
        if (headers == null || headers.Length == 0)
        {
            return HttpDelete(url, data, _routeHeaders, _routeHeaders);
        }
        else
        {
            var arr = headers.ToList();
            arr.Add(_routeHeaders);
            return HttpDelete(url, data,arr.ToArray());
        } 
    }
    #endregion
    #region 调用Http实现
    /// <summary>
    /// Get通讯方式进行通讯
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="data">数据</param>
    /// <param name="headers">头部信息</param>
    /// <returns></returns>
    private static string HttpGet(string url, object data, params KeyValuePair<string, string>[] headers)
    {
        return HttpAction(url, "GET", data, headers);
    }
    /// <summary>
    /// Post通讯方式进行通讯
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="data">数据</param>
    /// <param name="headers">头部信息</param>
    /// <returns></returns>
    private static string HttpPost(string url, object data, params KeyValuePair<string, string>[] headers)
    {
        return HttpAction(url, "POST", data, headers);
    }
    /// <summary>
    /// Patch通讯方式通讯
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="data">数据</param>
    /// <param name="headers">头部信息</param>
    /// <returns></returns>
    private static string HttpPatch(string url, object data, params KeyValuePair<string, string>[] headers)
    {
        return HttpAction(url, "PATCH", data, headers);
    }
    /// <summary>
    /// Delete通讯方式进行通讯
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="data">数据</param>
    /// <param name="headers">头部信息</param>
    /// <returns></returns>
    private static string HttpDelete(string url, object data, params KeyValuePair<string, string>[] headers)
    {
        return HttpAction(url, "DELETE", data, headers);
    }
    /// <summary>
    /// Http操作
    /// </summary>
    /// <param name="url">网址</param>
    /// <param name="method">类型</param>
    /// <param name="data">Post的数据</param>
    /// <param name="headers">头文件</param>
    /// <returns>返回的值</returns>       
    public static string HttpAction(string url, string method, object data, params KeyValuePair<string, string>[] headers)
    {
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.Headers.Set("Pragma", "no-cache");
        request.Method = method;
        request.ContentType = "application/json; charset=utf-8";
        request.Accept = "*/*";
        request.KeepAlive = false;

        if (headers.Length > 0)
        {
            foreach (var item in headers)
            {
                request.Headers.Add(item.Key, item.Value);
            }
        }
        //Post数据
        if (data != null)
        {
            string postValue = JsonConvert.SerializeObject(data);
            byte[] byteArray = Encoding.UTF8.GetBytes(postValue);
            using (Stream newStream = request.GetRequestStream())
            {
                newStream.Write(byteArray, 0, byteArray.Length);
            }
        }
        string result;
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            Stream stream = response.GetResponseStream();
            if (!string.IsNullOrEmpty(response.ContentEncoding) && response.ContentEncoding.ToLower().Contains("gzip"))
            {
                //gzip格式
                stream = new GZipStream(stream, CompressionMode.Decompress);
            }
            using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
            {
                result = sr.ReadToEnd();
            }
            stream.Dispose();
            stream = null;
        }
        return result;
    }
    #endregion
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/// /// 读保持寄存器03 /// /// 数据读取延迟 /// 设备从站地址 /// 数据起始地址 /// 寄存器数量 /// 返回的寄存器数值 /// 返回异常描述 /// 是否读取成功 public bool ReadHoldReg(int timeout, byte slaveAddress, ushort startAddress, ushort regCountIn, out ushort[] holdRegs, out ModbusException ex) /// /// 读输入寄存器04 /// /// 数据读取延迟 /// 设备从站地址 /// 数据地址 /// 寄存器数量 /// 返回的寄存器数值 /// 返回异常描述 /// 是否读取成功 public bool ReadInputReg(int timeout, byte slaveAddress, ushort startAddress, ushort regCountIn, out ushort[] InputRegs, out ModbusException ex) /// /// 写单寄存器(06功能码) /// /// 数据读取延迟 /// 设备从站地址 /// 寄存器地址 /// 寄存器值 /// 返回异常描述 /// 是否写入成功 public bool WriteSingleReg(int timeout, byte slaveAddress, ushort regAdr, ushort regValue, out ModbusException ex) /// /// 写单个线圈(05功能码) /// /// 数据读取延迟 /// 设备从站地址 /// 寄存器地址 /// 寄存器值 /// 返回异常描述 /// 是否写入成功 public bool WriteSingleCoil(int timeout, byte slaveAddress, ushort regAdr, ushort ONorOFF, out ModbusException ex) /// /// 写多寄存器(10功能码) /// /// 数据读取延迟 /// 设备从站地址 /// 寄存器起始地址 /// 寄存器值 /// 返回异常描述 /// 是否写入成功 public bool WriteMutilReg(int timeout, byte slaveAddress, ushort regAdr, ushort[] regValue, out ModbusException ex) ....................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值