zoukankan      html  css  js  c++  java
  • 一个封装的 HttpClientHelper

    public class EdiOFSRestHelper
        {
            public string appKey { get { return ""; } }
            public string appsecret { get { return ""; } }
            /// <summary>
            /// 返回结果格式
            /// </summary>
            public string format = "JSON";
            /// <summary>
            /// 接口版本
            /// </summary>
            public string v { get; set; }
            /// <summary>
            /// 签名
            /// </summary>
            public string sign { get; set; }
            /// <summary>
            /// 时间戳
            /// </summary>
            public string timestamp { get; set; }
    
            /// <summary>
            /// 应用参数
            /// </summary>
            public string ofs_param_json { get; set; }
            /// <summary>
            /// api接口名称
            /// </summary>
            public string api { get; set; }
            public string OFSApiUrl { get; set; }
    
            /// <summary>
            /// 无参构造函数
            /// </summary>
            public EdiOFSRestHelper() { }
    
            #region 构造函数
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="method">Rest方法名</param>
            /// <param name="version">版本(默认1.0)</param>
            /// <param name="apiUrl">服务地址(测试上线前需要将djapi改成:mockapi测试上线)</param>
            public EdiOFSRestHelper(string method, string json, string version = "1.0", string apiUrl = "")
            {
                timestamp = DateTime.Now.AddMinutes(-1).ToString("yyyy-MM-dd HH:mm:ss");
                v = version;
                ofs_param_json = json;
                api = method;
                OFSApiUrl = apiUrl;
                string strXXX = $@"api{method}appKey{appKey}data{ofs_param_json}format{format}timestamp{timestamp}v{v}";
                string strSign = string.Format("{0}{1}{0}", appsecret, strXXX);
                sign = Des.MD5(strSign);
            }
            #endregion
    
            #region OFSGet请求
            /// <summary>
            /// OFSGet请求
            /// </summary>
            /// <returns></returns>
            public HttmResponseInfo Get()
            {
                HttmResponseInfo result = null;
                Dictionary<string, string> parame = new Dictionary<string, string>();
                parame.Add("api", api);
                parame.Add("appKey", appKey);
                parame.Add("format", format);
                parame.Add("data", ofs_param_json);
                parame.Add("timestamp", timestamp);
                parame.Add("v", v);
                parame.Add("sign", sign);
    
                StringBuilder strUrl = new StringBuilder(OFSApiUrl);
                int i = 0;
                foreach (var key in parame.Keys)
                {
                    strUrl.AppendFormat("{0}{1}={2}", ++i > 1 ? "&" : "?", key, parame[key]);
                }
    
                HttpClientHelper client = new HttpClientHelper(strUrl.ToString());
                result = client.Get();
    
                return result;
            }
            #endregion
    
            #region OFSPost请求
            /// <summary>
            /// OFSPost请求
            /// </summary>
            /// <returns></returns>
            public HttmResponseInfo Post()
            {
                HttmResponseInfo result = null;
                Dictionary<string, string> parame = new Dictionary<string, string>();
                parame.Add("api", api);
                parame.Add("appKey", appKey);
                parame.Add("format", format);
                parame.Add("data", ofs_param_json);
                parame.Add("timestamp", timestamp);
                parame.Add("v", v);
                parame.Add("sign", sign);
    
                HttpClientHelper client = new HttpClientHelper(OFSApiUrl);
                result = client.Post(parame, false, "application/json");
    
                return result;
            }
            #endregion
        }
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Web;
    
    /// <summary>
    /// 客户端Http操作帮助类
    /// Author:William(徐威)
    /// Create Time:2016-08-08
    /// </summary>
    public class HttpClientHelper
    {
        #region 构造客户端Http操作帮助类静态对象
        private static HttpClientHelper instance = null;
    
        /// <summary>
        /// Http请求时间上限(毫秒,默认2分钟)
        /// </summary>
        public int TimeOut { get; set; }
    
        /// <summary>
        /// 接口地址
        /// </summary>
        public string ApiUrl { get; set; }
    
        /// <summary>
        /// 构造函数
        /// Author:William(徐威)
        /// Create Time:2016-08-08
        /// </summary>
        /// <param name="apiUrl">接口请求地址</param>
        /// <param name="timeOut">Http请求时间上限(毫秒,默认2分钟)</param>
        public HttpClientHelper(string apiUrl, int timeOut = 120000)
        {
            ApiUrl = apiUrl; // string.Format("{0}{1}format=json", apiUrl, apiUrl.IndexOf("?") == -1 ? "?" : "&");
            TimeOut = timeOut;
        }
    
        #endregion
    
        #region Get方式发起请求,返回Json字符串
        /// <summary>
        /// Get方式发起请求,返回Json字符串
        /// Author:William(徐威)
        /// Create Time:2016-08-08
        /// </summary>
        /// <param name="parameters">请求参数字典</param>
        /// <returns>Json字符串</returns>
        public HttmResponseInfo Get()
        {
            HttmResponseInfo result = new HttmResponseInfo();
    
            try
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ApiUrl);
                request.Timeout = TimeOut;
                request.Method = "GET";
                HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse();
                Stream myStream = HttpWResp.GetResponseStream();
                StreamReader sr = new StreamReader(myStream, Encoding.UTF8);
                StringBuilder strBuilder = new StringBuilder();
                while (-1 != sr.Peek())
                {
                    strBuilder.Append(sr.ReadLine());
                }
    
                result.Result = strBuilder.ToString();
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Result = "请求发生错误:" + ex.Message;
            }
    
            return result;
        }
        #endregion
    
        #region Post方式发起请求,返回Json字符串
        /// <summary>
        /// Post方式发起请求,返回Json字符串
        /// Author:William(徐威)
        /// Create Time:2016-08-08
        /// </summary>
        /// <param name="parameters">请求参数字典</param>
        /// <param name="UrlEncode">是否UrlEncode编码</param>
        /// <returns>Json字符串</returns>
        public HttmResponseInfo Post(IDictionary<string, string> parameters, bool UrlEncode = false,string ContentType= "application/x-www-form-urlencoded")
        {
            HttmResponseInfo result = new HttmResponseInfo();
    
            try
            {
                Encoding requestEncoding = Encoding.UTF8;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ApiUrl);
                request.Timeout = TimeOut;
                request.Method = "POST";
                request.ContentType = ContentType;
    
                #region 组装POST数据
                if (!(parameters == null || parameters.Count == 0))
                {
                    StringBuilder buffer = new StringBuilder();
                    int i = 0;
                    foreach (string key in parameters.Keys)
                    {
                        string v = parameters[key];
                        if (UrlEncode == true)
                        {
                            v = HttpUtility.UrlEncode(parameters[key], Encoding.UTF8);//UrlEncode编码
                        }
    
                        buffer.AppendFormat("{0}{1}={2}", ++i > 1 ? "&" : string.Empty, key, v);
                    }
    
                    byte[] data = requestEncoding.GetBytes(buffer.ToString());
                    using (Stream stream = request.GetRequestStream())
                    {
                        stream.Write(data, 0, data.Length);
                    }
                }
                #endregion
    
                HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse();
                Stream myStream = HttpWResp.GetResponseStream();
                StreamReader sr = new StreamReader(myStream, Encoding.UTF8);
                StringBuilder strBuilder = new StringBuilder();
                while (-1 != sr.Peek())
                {
                    strBuilder.Append(sr.ReadLine());
                }
    
                result.Result = strBuilder.ToString();
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Result = "请求发生错误:" + ex.Message;
            }
    
            return result;
        }
        #endregion
    
        #region Post方式发起请求,返回Json字符串
        /// <summary>
        /// Post方式发起请求,返回Json字符串
        /// Author:William(徐威)
        /// Create Time:2016-03-02
        /// </summary>
        /// <param name="requestData">请求内容</param>
        /// <returns>Json字符串</returns>
        public HttmResponseInfo Post(string requestData)
        {
            HttmResponseInfo result = new HttmResponseInfo();
    
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ApiUrl);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = Encoding.UTF8.GetByteCount(requestData);
                Stream myRequestStream = request.GetRequestStream();
                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
                myStreamWriter.Write(requestData);
                myStreamWriter.Close();
    
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                result.Result = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                result.Result = result.Result.Replace(Environment.NewLine, "");
                result.Result = result.Result.Replace("
    ", "");
                result.Result = result.Result.Replace("
    ", "");
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Result = string.Format("请求发生错误:{0}", ex.Message);
            }
    
            return result;
        }
        #endregion
    
        #region Get方式发起请求,返回Json字符串
        /// <summary>
        /// Get方式发起请求,返回Json字符串
        /// Author:William(徐威)
        /// Create Time:2016-03-02
        /// </summary>
        /// <param name="requestData">请求内容</param>
        /// <returns></returns>
        public HttmResponseInfo HttpGet(string requestData)
        {
            HttmResponseInfo result = new HttmResponseInfo();
    
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format("{0}{1}{2}", ApiUrl, (string.IsNullOrEmpty(requestData) ? "" : "?"), requestData));
                request.Method = "GET";
                request.ContentType = "text/html;charset=UTF-8";
    
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                result.Result = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Result = string.Format("请求发生错误:{0}" + ex.Message);
            }
    
            return result;
        }
        #endregion
    }
    /// <summary>
    /// Http请求返回实体类
    /// </summary>
    public class HttmResponseInfo
    {
        public HttmResponseInfo()
        {
            IsSuccess = true;
        }
    
        /// <summary>
        /// 请求是否成功(默认成功)
        /// </summary>
        public bool IsSuccess { get; set; }
    
        /// <summary>
        /// 返回Json字符串
        /// </summary>
        public string Result { get; set; }
    }
    分享、奉献、勤奋、好学
  • 相关阅读:
    [ZJOI2013]K大数查询 浅谈整体二分
    2019暑假杭二day1测试总结
    2019暑假杭二day2测试总结
    2019暑假杭二day3测试总结
    2019暑假杭二day4测试总结
    2019暑假杭二day5测试总结
    一些有趣的教学视频
    karatsuba乘法
    多项式求逆元
    FFT
  • 原文地址:https://www.cnblogs.com/zzlblog/p/14611919.html
Copyright © 2011-2022 走看看