不會發生我寫的使用(超時= 2000)下面的代碼HttpWebRequest和webproxy
下面的代碼總是會拋出一個異常,因爲錯誤的URL(「ww.google.com」)超時異常及時
當運行該程序,我得到2種例外的交替
1.遠程服務器返回錯誤:(404)未找到(網頁異常)
=>這需要小於2000毫秒捕獲此異常
=>這個異常處理是正常的。
。
2.連接嘗試失敗,因爲連接的方沒有正確一段時間後響應或連接的主機未能響應(插座除外)
=>它需要25秒鐘或更長時間,以趕上這個異常
=>我設置了一個請求2000ms超時但它不起作用!
我想捕捉異常,如果有是2秒
內沒有反應,應該怎麼辦?
try
{
request = (HttpWebRequest)WebRequest.Create("https://ww.google.com");
request.Proxy = proxy;
request.Method = "GET";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36";
request.Timeout = 2000;
response = (HttpWebResponse)request.GetResponse();
if ((response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Moved || response.StatusCode == HttpStatusCode.Redirect))
{
StreamReader sreader = new StreamReader(response.GetResponseStream(), Encoding.Default);
gethtml = sreader.ReadToEnd();
sreader.Close();
}
}
catch (Exception ex)
{
throw ex;
}
看起來好像請求是在您的嘗試範圍之外聲明的。因此其他演員有可能改變超時時間嗎?也許嘗試在try範圍內聲明響應,看看它是如何發生的。 – SAm
你有沒有考慮切換到更現代的HttpClient Api?您可以使用CancellationTokens以非常優雅的方式處理這些案例:https://msdn.microsoft.com/zh-CN/library/hh139115(v=vs.110).aspx –
@SAm感謝您的建議。正如所建議的,我把httpwebrequest聲明放在一個try中。但是,問題仍然存在,但是謝謝 –