protected string HttpRequest(RequestParameter parameter)
        {
            parameter.Check();

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(parameter.Url);

            request.Method = parameter.Method;
            request.Headers.Add("Authorization", $"Bearer {this.AccessToken}");
            request.ContentType = parameter.ContentType ?? "application/json";
            if (parameter.Headers != null)
            {
                foreach (var key in parameter.Headers.AllKeys)
                {
                    request.Headers.Add(key, parameter.Headers[key]);
                }
            }

            if (!string.IsNullOrWhiteSpace(parameter.Data))
            {
                var postData = Encoding.UTF8.GetBytes(parameter.Data);
                using (var stream = request.GetRequestStream())
                {
                    stream.Write(postData, 0, postData.Length);
                }
            }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            using (var myResponseStream = response.GetResponseStream())
            {
                using (var myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")))
                {
                    return(myStreamReader.ReadToEnd());
                }
            }
        }
 protected T HttpRequest <T>(RequestParameter parameter)
 {
     return(JsonConvert.DeserializeObject <T>(this.HttpRequest(parameter)));
 }