HTTP相关操作

37 篇文章 0 订阅

1.检查网络连接状态

public static bool HttpStatusIsOK(string url)
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)null;
            url = url.IndexOf("?", StringComparison.Ordinal) <= 0 ? url + "?version=" + DateTime.Now.Ticks.ToString((IFormatProvider)CultureInfo.InvariantCulture) : url + "&version=" + DateTime.Now.Ticks.ToString((IFormatProvider)CultureInfo.InvariantCulture);
            try
            {
                httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                httpWebRequest.Method = "GET";
                httpWebRequest.Timeout = 10000;
                httpWebRequest.AllowAutoRedirect = false;
                httpWebRequest.UserAgent = "IIS Web Server";
                using (HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse)
                {
                    if (httpWebResponse == null)
                        return false;
                    return httpWebResponse.StatusCode < HttpStatusCode.BadRequest;
                }
            }
            catch (Exception ex)
            {
                HttpHelper.Logger.Error((object)ex);
                if (httpWebRequest != null)
                    httpWebRequest.Abort();
                return false;
            }
        }

2. 发起http请求,并返回请求内容

public static object RequestWeb(string weburl, HttpMethods method)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(weburl);
            //http里的Accept属性
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            if (response.StatusCode != HttpStatusCode.OK)
                return null;

            string repData = string.Empty;
            using (var stream = response.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    repData = reader.ReadToEnd();
                }
            }
            return repData;
        }

3. 下载文件流并保存到文件

/// <summary>
        /// 从Web下载文件到本地
        /// </summary>
        /// <param name="uri">远程地址</param>
        /// <param name="dest">本地文件地址,带文件名和后缀的全路径</param>
        /// <returns></returns>
        public static bool DownloadFromWeb(string uri, string dest)
        {
            if (string.IsNullOrWhiteSpace(uri) || string.IsNullOrWhiteSpace(dest))
                return false;
            try
            {
                string dir = Path.GetDirectoryName(dest);
                if (!Directory.Exists(dest))
                    Directory.CreateDirectory(dir);
                if (File.Exists(dest))
                    File.Delete(dest);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                if (response.StatusCode != HttpStatusCode.OK)
                    return false;

                using (var stream = response.GetResponseStream())
                {
                    using (FileStream file = new FileStream(dest, FileMode.CreateNew))
                    {
                        byte[] buffer = new byte[1024];
                        int count = stream.Read(buffer, 0, 1024);
                        while (count > 0)
                        {
                            file.Write(buffer, 0, count);
                            count = stream.Read(buffer, 0, 1024);
                        }
                        file.Flush();
                    }
                }
                return true;
            }
            catch { }
            return false;
        }

4. 文件流到目标流

/// <summary>
        /// 从网络上下载文件流, 并将文件定写入到目标流中
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="stream"></param>
        public static void DownloadFromWeb(string uri, Stream stream)
        {
            if (string.IsNullOrWhiteSpace(uri))
                throw new ArgumentNullException("uri");
            if (stream == null)
                throw new ArgumentNullException("stream");
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                if (response.StatusCode != HttpStatusCode.OK)
                    return;

                using (var rspStream = response.GetResponseStream())
                {
                    byte[] buffer = new byte[1024];
                    int count = rspStream.Read(buffer, 0, 1024);
                    while (count > 0)
                    {
                        stream.Write(buffer, 0, count);
                        count = stream.Read(buffer, 0, 1024);
                    }
                }
            }
            catch { }
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值