Ejemplo n.º 1
0
        /// <summary>
        /// 发送http请求(支持HTTPS请求,需要指定证书文件及证书密码)
        /// </summary>
        /// <param name="url">提交的URL地址.</param>
        /// <param name="queryString">数据.</param>
        /// <param name="httpMode">Http请求模式.</param>
        /// <param name="contentEncoding">字符编码类型.</param>
        /// <returns>Return a data(or instance) of String.</returns>
        /// User:Ryan  CreateTime:2012-10-15 22:58.
        public static string SendSyncRequest(string url, string queryString, EnumHttpMode httpMode, Encoding contentEncoding
                                             , string certFile = "", string certPwd = "")
        {
            //1.validation parameters
            if (string.IsNullOrEmpty(url))
            {
                return(null);
            }
            if (string.IsNullOrEmpty(queryString))
            {
                queryString = queryString.TrimStart(new char[] { '?' });
            }
            if (contentEncoding == null)
            {
                throw new ArgumentNullException("contentEncoding");
            }
            //2.generate http request
            HttpWebRequest request = null;

            switch (httpMode)
            {
            case EnumHttpMode.Get:
                request        = (HttpWebRequest)WebRequest.Create(string.Format("{0}?{1}", url, queryString.TrimStart(new char[] { '?' })));
                request.Method = "GET";
                break;

            case EnumHttpMode.Post:
                request             = (HttpWebRequest)WebRequest.Create(url);
                request.Method      = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                byte[] bytes = contentEncoding.GetBytes(queryString);
                request.ContentLength = bytes.Length;
                Stream requestStream = request.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
                break;

            default:
                throw new ArgumentException("不支持该类型的HTTP请求模式", "httpMode");
            }
            //2.2 Https request
            if (!string.IsNullOrEmpty(certFile) && !string.IsNullOrEmpty(certPwd))
            {
                request.ClientCertificates.Add(new X509Certificate2(certFile, certPwd));
            }

            //3.execute request
            try
            {
                return(new StreamReader(((HttpWebResponse)request.GetResponse()).GetResponseStream(), contentEncoding).ReadToEnd());
            }
            //4.catch exception
            catch (Exception exception)
            {
                return(exception.Message);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 发送http请求(默认编码法方式)
 /// </summary>
 /// User:Ryan  CreateTime:2012-10-15 22:58.
 public static string SendSyncRequest(string url, string queryString, EnumHttpMode httpMode)
 {
     return(SendSyncRequest(url, queryString, httpMode, Encoding.Default));
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取网络中的数据,返回流。
        /// </summary>
        /// <param name="url">提交的URL地址.</param>
        /// <param name="queryString">数据.</param>
        /// <param name="httpMode">Http请求模式.</param>
        /// <param name="contentEncoding">字符编码类型.</param>
        /// <param name="certFile">证书文件</param>
        /// <param name="certPwd">证书密码</param>
        /// <returns>返回网络返回的数据流。</returns>
        public static Stream SendSyncRequestToGetStream(string url, string queryString, EnumHttpMode httpMode, Encoding contentEncoding
                                                        , out long contentLength, string certFile = "", string certPwd = "")
        {
            contentLength = 0;
            //1.validation parameters
            if (string.IsNullOrEmpty(url))
            {
                return(null);
            }
            if (string.IsNullOrEmpty(queryString))
            {
                queryString = queryString.TrimStart(new char[] { '?' });
            }
            if (contentEncoding == null)
            {
                throw new ArgumentNullException("contentEncoding");
            }
            //2.generate http request
            HttpWebRequest request = null;

            switch (httpMode)
            {
            case EnumHttpMode.Get:
                request        = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";
                break;

            case EnumHttpMode.Post:
                request             = (HttpWebRequest)WebRequest.Create(url);
                request.Method      = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                byte[] bytes = contentEncoding.GetBytes(queryString);
                request.ContentLength = bytes.Length;
                Stream requestStream = request.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
                break;

            default:
                throw new ArgumentException("不支持该类型的HTTP请求模式", "httpMode");
            }
            //2.2 Https request
            if (!string.IsNullOrEmpty(certFile) && !string.IsNullOrEmpty(certPwd))
            {
                request.ClientCertificates.Add(new X509Certificate2(certFile, certPwd));
            }

            //3.execute request
            try
            {
                var res = request.GetResponse();
                contentLength = res.ContentLength;
                return(res.GetResponseStream());
            }
            //4.catch exception
            catch (Exception exception)
            {
                Logger.LogHelper.Error("请求网络数据失败! ", exception);
                return(null);
            }
        }