【解决方案 十】判断URL请求是否成功并检测访问效率

简介: 【解决方案 十】判断URL请求是否成功并检测访问效率

最近在做的一个需求是这样的:要求判断某一个URL是否能请求到资源,并且计算该URL的执行效率。从网上找了一些方法,最终确定通过如下的方式来实现。

判断某一个URL是否能请求到资源

首先通过如下代码来对URL请求资源的返回内容做判断:

/// <summary>
        /// 检测url是否有效
        /// </summary>
        /// <param name="url">url</param>
        /// <returns></returns>
        public static bool CheckOutUrlStatus(string url)
        {
            var result = false;
            HttpWebRequest webRequst = null;        //HTTP请求
            HttpWebResponse webResponse = null;     //HTTP会话
            try
            {
                webRequst = (HttpWebRequest)WebRequest.Create(url); //创建http请求
                webRequst.Method = "HEAD";  //设置请求类型为HEAD,只请求头部信息
                webResponse = (HttpWebResponse)webRequst.GetResponse(); //获得http会话
                if (webResponse.StatusCode == HttpStatusCode.OK) //请求成功
                    result = true;
            }
            catch (Exception)
            {
            }
            finally
            {
                //关闭会话
                if (webResponse != null)
                    webResponse.Close();
            }
            return result;
        }

通过单元测试检测该接口的有效性

接口编写完毕后,通过两个不同的网址URL来监测接口是否符合要求:

检测HEAD请求和GET请求的性能

请求的方式有很多种,由于我们只需要获取是否访问能成功即可这样的结果,所以只需请求响应的头部信息即可。可以通过stopwatch函数来监测对应请求的访问性能。

[TestMethod]
        public void TimeCheck()
        {
            var stopwatch = new Stopwatch();
            stopwatch.Start(); // 开始监视代码运行时间
            #region 要执行的代码体
            //需要监测的代码
            const int count = 1000; //循环执行请求次数
            var i = 0;
            const string url = "http://www.baidu.cn";
            while (i < count)
            {
                var resultRight = UrlHelper.CheckOutUrlStatus(url);
                i++;
            }
            #endregion 要执行的代码体
            stopwatch.Stop(); // 停止监视
            var timespan = stopwatch.Elapsed; // 获取当前实例测量得出的总时间
            var hours = timespan.TotalHours.ToString("#0.00000000 "); // 总小时
            var minutes = timespan.TotalMinutes.ToString("#0.00000000 "); // 总分钟
            var seconds = timespan.TotalSeconds.ToString("#0.00000000 "); // 总秒数
            var milliseconds = timespan.TotalMilliseconds.ToString("#0.00000000 "); // 总毫秒数
            Console.WriteLine(milliseconds);
        }

通过单元测试对百度地址进行1000次请求,结果表现为,在HEAD请求状态下,共耗费时间4863毫秒,GET请求状态下,共耗费13554.95毫秒,大概是1:3的时间状态。

结论

通过以上内容的学习和分析,得出如下积累和输出:

  • URL接口请求可用以上代码(CheckOutUrlStatus)来确定资源访问结果。
  • 在同样的请求URL下,使用HEAD的效率高于GET,因为HEAD只请求了头部信息,检测的话最好用1000及以上次数,可以规避网络波动的影响
  • 可以用stopwatch来检测代码的执行效率。

以上就是这个需求过程中的收获。

相关文章
|
6月前
|
域名解析 网络协议 开发工具
阿里云DNS常见问题之访问重定向的url访问有问题如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
6月前
|
网络协议 开发工具 Android开发
应用研发平台EMAS产品常见问题之接入httpdns后 访问重定向的url访问有问题如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
3月前
|
JavaScript Linux 应用服务中间件
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
|
3月前
使用URL方式进行人脸检测
【8月更文挑战第2天】使用URL方式进行人脸检测。
66 3
|
4月前
|
缓存 网络协议 Java
(六)网络编程之化身一个请求感受浏览器输入URL后奇妙的网络之旅!
在浏览器上输入一个URL后发生了什么? 这也是面试中老生常谈的话题,包括网上也有大量关于这块的内容。
130 2
|
3月前
|
网络协议
【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
|
3月前
|
数据采集 人工智能 监控
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
|
4月前
|
缓存 安全 Web App开发
Chrome插件实现问题之网络进程接收到URL请求后会如何解决
Chrome插件实现问题之网络进程接收到URL请求后会如何解决
|
5月前
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
84 5
|
4月前
|
Web App开发 前端开发
canvas保存图片时,谷歌浏览器Chrome报错【解决方案】Not allowed to navigate top frame to data URL
canvas保存图片时,谷歌浏览器Chrome报错【解决方案】Not allowed to navigate top frame to data URL
127 0

热门文章

最新文章