码迷,mamicode.com
首页 > Web开发 > 详细

HttpWebRequest调用接口

时间:2020-01-13 10:40:35      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:char   +=   ati   ext   err   accept   create   sig   ring   

/// <summary>
    /// Http 请求 通用来
    /// </summary>
    public abstract class HttpRequest
    {
        public static string HttpAccept_JSON_UTF8 = "application/json;charset=UTF-8";
        public static string HttpAccept_XML = "application/xml;";
        public static int? reqest_timeout = 15000;
        /// <summary>
        /// 发起 HttpGet 请求
        /// </summary>
        /// <param name="requestUriString"></param>
        /// <param name="content"></param>
        /// <param name="timeout">请求超时前等待的毫秒数。默认值是 15,000 毫秒(15 秒)。</param>
        /// <param name="contentType">application/xml、application/json、application/text、application/x-www-form-urlencoded</param>
        /// <param name="httpAccept">接受的数据类型</param>
        /// <returns></returns>
        public static string HttpGet(string requestUriString,string content=null,int timeout= 0, string contentType =null, string httpAccept=null)//get方式提交数据
        {
            //计数器用于识别请求
            long num = DateTime.Now.Ticks; 
            contentType = contentType ?? "application/x-www-form-urlencoded";
            httpAccept = httpAccept ?? HttpAccept_XML;
            string url = requestUriString;
            if (url.IndexOf("?") <0)
            {
                url += "?";
            }
            url = url + content;
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = contentType;
            request.Accept = httpAccept ?? HttpAccept_XML;
            request.Timeout = timeout > 0 ? timeout : reqest_timeout.Value;
            request.AllowAutoRedirect = false;

            WebResponse response = null;
            string responseStr = null;
            try
            {
                response = request.GetResponse();
                if (response != null)
                {
                    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                    responseStr = reader.ReadToEnd();
                    reader.Close();
                }
            }
            catch (Exception ex)
            {
                //LogService.Error($"HttpGet 请求出错 url:{url}", ex);
            }
            finally
            {
                request = null;
                response = null;
            }
            return responseStr;
        }

        /// <summary>
        /// HTTP POST方式请求数据
        /// </summary>
        /// <param name="url">URL</param>
        /// <param name="content">POST的数据</param>
        /// <param name="contentType">application/xml、application/json、application/text、application/x-www-form-urlencoded</param>
        /// <param name="httpAccept ">接受的数据类型</param>
        /// <param name="timeout">超时时间毫秒</param>
        /// <returns>请求返回数据</returns>
        public static string HttpPost(string url, string content, int? timeout = null, string contentType = null, string httpAccept =null)
        {
            //计数器用于识别请求
            long num = DateTime.Now.Ticks;

            contentType = contentType ?? "application/x-www-form-urlencoded";
            httpAccept  = httpAccept  ?? HttpAccept_XML;
            timeout = timeout?? reqest_timeout;

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = contentType;
            request.Accept = httpAccept ;
            request.Timeout = timeout.Value;
            request.AllowAutoRedirect = false;

            StreamWriter requestStream = null;
            WebResponse response = null;
            string responseStr = null;
            try
            {
                requestStream = new StreamWriter(request.GetRequestStream());
                requestStream.Write(content);
                requestStream.Close();

                response = request.GetResponse();
                if (response != null)
                {
                    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                    responseStr = reader.ReadToEnd();
                    reader.Close();
                }
            }
            catch (Exception ex)
            {
                //LogService.Error($"HttpPost 请求出错 URL:{url} Content:{content}", ex);
            }
            finally
            {
                request = null;
                requestStream = null;
                response = null;
            }
            return responseStr;
        }
    }


方法调用:
string url="";//接口地址 string content="";//参数

  var dic = new Dictionary<string, string>();
  dic.Add("appid", appId);
  dic.Add("timestamp", timeStamp);
  dic.Add("sign", sign);

string jsonResult = HttpRequest.HttpPost(url, content, 15000, "application/json", "application/json", dic);

string jsonResult = HttpRequest.HttpGet(url, content, 0, "application/json", null, dic);

HttpWebRequest调用接口

标签:char   +=   ati   ext   err   accept   create   sig   ring   

原文地址:https://www.cnblogs.com/nayilvyangguang/p/9981586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!