/// <summary>
 /// Http请求头部处理
 /// </summary>
 /// <param name="httpRequest"></param>
 protected override void RequestHeaderExecuting(HttpWebClient httpRequest)
 {
     if (!string.IsNullOrEmpty(this.Token.AccessToken))
     {
         httpRequest.Headers["Authorization"] = string.Format("OAuth2 {0}", this.Token.AccessToken);
     }
 }
        /// <summary>
        /// 发送Http请求
        /// </summary>
        /// <param name="url">请求Url</param>
        /// <param name="method">请求类型</param>
        /// <param name="parameters">参数集合</param>
        /// <returns></returns>
        private String Request(string url, RequestMethod method = RequestMethod.Get, params RequestOption[] parameters)
        {
            HttpWebClient         httpWebClient  = new HttpWebClient();
            HttpWebResponseResult responseResult = null;

            #region 发起Http数据请求
            switch (method)
            {
            case RequestMethod.Get:
            {
                #region         //请求头和请求参数预处理
                RequestHeaderExecuting(httpWebClient);
                parameters = RequestGetExecuting(parameters);
                #endregion

                #region         //传递参数
                foreach (var item in parameters)
                {
                    httpWebClient.SetField(item.Name, (string)item.Value);
                }
                #endregion

                //发起请求
                responseResult = httpWebClient.Get(url);
            }
            break;

            case RequestMethod.Post:
            {
                #region         //请求头和请求参数预处理
                RequestHeaderExecuting(httpWebClient);
                parameters = RequestPostExecuting(parameters);
                #endregion

                #region         //判断当前POST是否为Multipart(即同时包含普通表单字段和文件表单字段)
                bool isMultipart = false;
                foreach (var item in parameters)
                {
                    if (item.IsBinary)
                    {
                        isMultipart = true;
                        break;
                    }
                }
                #endregion

                #region         //传递参数
                if (isMultipart)
                {
                    foreach (var item in parameters)
                    {
                        if (item.IsBinary)
                        {
                            httpWebClient.SetField(item.Name, (byte[])item.Value, String.Empty, String.Empty);
                        }
                        else
                        {
                            httpWebClient.SetField(item.Name, (string)item.Value, true);
                        }
                    }
                }
                else
                {
                    foreach (var item in parameters)
                    {
                        httpWebClient.SetField(item.Name, (string)item.Value);
                    }
                }
                #endregion

                //发起请求
                responseResult = httpWebClient.Post(url);
            }
            break;
            }
            #endregion

            return(responseResult.IsSuccess ? responseResult.ResponseText : String.Empty);
        }
 protected virtual void RequestHeaderExecuting(HttpWebClient httpRequest)
 {
 }