同步 WEB 请求

#region 同步 WEB 请求
/*
* 有点像 jQuery 的思路,当他调用其他方法是当前方法会被阻塞,知道I/O 操作结束。异步工作进行期间,线程就被白白浪费了。
* 就相当于 原本有三个人,但却只用到了一个人,并且让这一个人去做一系列的事,但他只能一件一件地去做,
* 在做这件事的时候,其他的任务就阻塞了,原本有三个人,却只让一个人去做,这不就白白浪费了资源了吗?
*
* 用 try/catch 描述控制流 ,给一个 WebRequest 让后调用GetResponse ()方法下载页面 利用 GetResponseStream () 方法读取网页信息
* 并将信息赋值给 reader 然后调用 ReadToEnd 读取流 然后在判断网页的大小并打印。
*/

   //public class Program
    //{

//public static   Stopwatch k = new Stopwatch();


//   public static void Main(string[] args)
//   {

//       string url = "https://docs.microsoft.com/en-us/dotnet/api/system.net.webrequest.getresponse?view=netframework-4.8#System_Net_WebRequest_GetResponse";//要访问的网页

//       if (args.Length > 0)
//       {
//           url = args[0];
//       }
//       k.Start();
//       try
//       {
//           Console.WriteLine(url);
//           WebRequest webRequest = WebRequest.Create(url);
//           //WebRequest 向统一资源标识符(URI)发出请求。发出请求
//           //Create(url)访问网页
//           WebResponse response = webRequest.GetResponse();
//           //WebResponse 提供来自统一资源标识符(URI)的响应。 响应网页
//           // GetResponse 包含对Internet请求的响应的WebResponse。  下载网页
//           Console.WriteLine(".......");

//           // StreamReader 从特定编码的字节流中读取字符的TextReader。
//           //GetResponseStream 用于从Internet(英特网)资源中读取数据。GetResponseStream  ,对网页进行流的访问
//           using (StreamReader reader = new StreamReader(response.GetResponseStream()))
//           {
//               string text = reader.ReadToEnd();
//               //流的其余部分作为字符串,从当前位置到结束。如果当前位置位于流的末尾,则返回一个空字符串
//               Console.WriteLine(
//                   FormatBytes(text.Length));

//           }

//       }
//       catch (WebException)//通过可插拔协议访问网络时发生错误时引发的异常。
//       {

//           throw;
//       }
//       catch (IOException)//发生I/O错误时引发的异常。
//       {
//           throw;
//       }
//       catch (NotSupportedException)
//       //当调用的方法不受支持时,或当试图读取、查找或写入不支持所调用功能的流时引发的异常。
//       {
//           throw;
//       }
//       k.Stop();
//       Console.WriteLine("{0}毫秒",k.ElapsedMilliseconds);
//   }

//   static public string FormatBytes(long bytes)
//   {
//       string[] manitudes = new string[] { "GB", "MB", "KB", "Bytes" };

//       long max = (long)Math.Pow(1024, manitudes.Length);//设置容量
//       return string.Format("{1:##.##} {0}",//用字符串表示形式替换格式项的格式的副本即arg0和arg1。
//           //  public static String Format(String format, object arg0, object arg1);
//       manitudes.FirstOrDefault(
//               //FirstOrDefault  取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值
//               //还有一个 First  取序列中满足条件的第一个元素,如果没有元素满足条件, 抛出异常
//               //linq 的方法,理解不深,回头补上
//               manitude => bytes > (max /= 1024)) ?? "0 Bytes", (decimal)bytes / (decimal)max);
//       //?? 是 C#2.0 中新增的运算符,可以认作三元运算符的简化版,
//       // 起主要作用是 如果 ?? 运算符的左操作数非空,运算符就返回左操作符树,否则就返回右操作符数
//       //相当于 if else
//   }
//}
#endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值