下面两段代码返回的异常为什么不一样,有大佬解释一下吗?
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://www.alibabacloud.com");
request.Timeout = 5000;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
HttpWebRequest request2 = (HttpWebRequest) WebRequest.Create("https://www.cnblogs.com");
request2.Timeout = 1;
HttpWebResponse response2 = (HttpWebResponse) request2.GetResponse();
异常信息为
Unhandled Exception: System.Net.WebException: The operation has timed out.
at System.Net.HttpWebRequest.GetResponse()
第二段代码:
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://www.alibabacloud.com");
request.Timeout = 5000;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
request = (HttpWebRequest) WebRequest.Create("https://www.cnblogs.com");
request.Timeout = 1;
response = (HttpWebResponse) request.GetResponse();
异常信息为
Unhandled Exception: System.OperationCanceledException: The operation was canceled.
at System.Net.HttpWebRequest.GetResponse()
为什么返回的异常信息会不一样啊? 有哪些知识需要我去了解的吗?
还有一个问题就是同样的代码,windows上返回 timeout错误, linux上返回 operationcancel 错误??
https://github.com/restsharp/RestSharp
第三方的库,封装的HttpWebRequest。
代码里 request2 设置的超时时间太短了,1毫秒。肯定报错。
我就是要让他报错的,只是异常不一样
这个库可以去了解一下。谢谢啦
@BUTTERAPPLE: 可以翻翻源码看,不太知道它底层的原理..
@从今天开始: 底层也是用httpwebrequest 发请求的。
@BUTTERAPPLE: 不是,我说可以翻HttpWebRequest源码看看 为什么异常不一样。
@从今天开始: 目前一个猜测是 keep-alive 的问题,还善待验证
HttpWebRequest
无边,回 HttpClient
是岸
用HttpWebRequest用的我真是心态要炸了。