Http请求辅助类

使用方式
在这里插入图片描述

/// <summary>
    /// 创建Http请求辅助类
    /// </summary>
    public partial class HttpUtil
    {
        public static string SendRequestGet(string url, string para)
        {
            string strResult = "";
            if (url == null || url == "")
                return null;

            try
            {
                System.Net.WebRequest wrq = System.Net.WebRequest.Create(url + para);
                wrq.Method = "GET";

                System.Net.WebResponse wrp = wrq.GetResponse();
                System.IO.StreamReader sr = new System.IO.StreamReader(wrp.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8"));

                strResult = sr.ReadToEnd();
            }
            catch (Exception ex)
            {
                return ex.Message;
            }

            return strResult;
        }

        public static string RequestPostJson(string url, string param, Hashtable requestHeader)
        {
            string strValue = "";
            try
            {
                string strURL = url;
                System.Net.HttpWebRequest request;
                request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
                request.Method = "POST";
                request.ContentType = "application/json;charset=UTF-8";
                string paraUrlCoded = param;
                byte[] payload;
                payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
                request.ContentLength = payload.Length;
                if (requestHeader != null)
                {
                    foreach (var key in requestHeader.Keys)
                    {
                        request.Headers.Add(key.ToString(), requestHeader[key].ToString());
                    }
                }

                Stream writer = request.GetRequestStream();
                writer.Write(payload, 0, payload.Length);
                writer.Close();
                System.Net.HttpWebResponse response;
                response = (System.Net.HttpWebResponse)request.GetResponse();
                System.IO.Stream s;
                s = response.GetResponseStream();
                string StrDate = "";

                StreamReader Reader = new StreamReader(s, Encoding.UTF8);
                while ((StrDate = Reader.ReadLine()) != null)
                {
                    strValue += StrDate + "\r\n";
                }
            }
            catch (Exception e)
            {
                strValue = "RequestPost请求异常:" + e.Message;
            }
            return strValue;
        }

        /// <summary>
        /// 使用Post方式提交数据
        /// </summary>
        /// <param name="param">body参数</param>
        /// <param name="url">请求地址</param>
        /// <param name="requestHeader">requestHeader参数</param>
        /// <returns></returns>
        public static string Post(string param, string url, Hashtable requestHeader, string contentType = "application/json;charset=UTF-8")
        {
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);

            byte[] postBytes = Encoding.GetEncoding("UTF-8").GetBytes(param);
            req.Method = "POST";
            //req.Referer = "itjsxx.com";
            req.ContentType = contentType;

            req.ContentLength = postBytes.Length;
            req.KeepAlive = true;
            req.Timeout = 10 * 60 * 1000;
            //需要将参数放置在header中
            if (requestHeader != null)
            {
                foreach (var key in requestHeader.Keys)
                {
                    req.Headers.Add(key.ToString(), requestHeader[key].ToString());
                }
            }
            else
            {
                req.Accept = "text/html,application/json,application/xml;q=0.9,image/webp,*/*;q=0.8";
                req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36";
            }
            using (Stream reqStream = req.GetRequestStream())
            {
                reqStream.Write(postBytes, 0, postBytes.Length);
            }

            string res = string.Empty;
            using (WebResponse wr = req.GetResponse())
            {
                Stream strm = wr.GetResponseStream();
                StreamReader sr = new StreamReader(strm, Encoding.GetEncoding("UTF-8"));
                res = sr.ReadLine();
            }
            return res;
        }

        public static string Post(string param, string url, int type)
        {
            var result = "";
            WebClient client = new WebClient();
            client.Headers.Add("Content-Type", "application/json;charset=UTF-8");
            byte[] responseData = client.UploadData(url, "POST", Encoding.UTF8.GetBytes(param));
            if (type == 1)
            {
                try
                {
                    if (responseData != null)
                    {
                        string str = Convert.ToBase64String(responseData); ;
                        //byte[] b = Convert.FromBase64String(str);
                        return str;
                    }
                    else
                    {
                        return "error";
                    }
                }
                catch
                {
                    return "error";
                }
            }
            else
            {
                result = Encoding.UTF8.GetString(responseData);
            }
            return result;
        }

        /// <summary>
        /// 使用Post方式提交数据 --防止死锁
        /// </summary>
        /// <param name="url"></param>
        /// <param name="requestHeader"></param>
        /// <returns></returns>
        public static async Task<string> Post(string url, List<KeyValuePair<string, string>> requestHeader)
        {
            HttpClient client = new HttpClient();
            var content = new FormUrlEncodedContent(requestHeader);
            HttpResponseMessage response = await client.PostAsync(url, content).ConfigureAwait(false);
            return await response.Content.ReadAsStringAsync().ConfigureAwait(false);
        }

        /// <summary>
        /// 请求网络资源,返回响应的文本
        /// </summary>
        /// <param name="url">网络资源地址</param>
        /// <param name="parameters">提交的参数,格式:参数1=参数值1&amp;参数2=参数值2</param>
        /// <param name="encoding">字符编码</param>
        /// <param name="isPost">是否Post提交</param>
        /// <param name="contentType">内容类型</param>
        /// <param name="cookie">Cookie容器</param>
        /// <param name="timeout">超时时间</param>
        public static string HttpWebPost(string url, string parameters, Encoding encoding, bool isPost = false,
             string contentType = "application/json", CookieContainer cookie = null, int timeout = 120000)
        {
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Timeout = timeout;
            request.CookieContainer = cookie;
            if (isPost)
            {
                byte[] postData = encoding.GetBytes(parameters);
                request.Method = "POST";
                request.ContentType = contentType;
                request.ContentLength = postData.Length;
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(postData, 0, postData.Length);
                }
            }
            var response = (HttpWebResponse)request.GetResponse();
            string result;
            using (Stream stream = response.GetResponseStream())
            {
                if (stream == null)
                    return string.Empty;
                using (var reader = new StreamReader(stream, encoding))
                {
                    result = reader.ReadToEnd();
                }
            }
            return result;
        }

    }

猜你喜欢

转载自blog.csdn.net/qq_39072819/article/details/104973530