public void BuildImg()
{
// The two different images as strings.
string url1 = "http://remoteimage.com/image.jpg";
string url2 = "http://remoteimage.com/image2.jpg";
try
{
// Check to see if url1 exists or not
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url1);
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
myImg.Visible = true;
myImg.ImageUrl = url1;
}
catch (Exception ex)
{
// Check to see if url2exists or not
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url2);
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
HttpWebResponse response;
try
{
response = request.GetResponse() as HttpWebResponse;
}
catch (WebException exc)
{
response = exc.Response as HttpWebResponse;
}
// Set myImg to show if url2 exists
myImg.Visible = true;
myImg.ImageUrl = url2;
// If response returns 404, then hide myImg
if (response.StatusCode == HttpStatusCode.NotFound)
{
myImg.Visible = false;
}
}
回答
var arr = new[]
{
"http://example.com/image.jpg",
"http://example.com/image2.jpg"
...
};
myImg.ImageUrl = arr.FirstOrDefault(i => CheckExistence(i));
static bool CheckUrlExistence(string url)
{
try
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "HEAD";
var response = (HttpWebResponse)request.GetResponse();
return response.StatusCode == HttpStatusCode.OK;
}
catch (Exception ex)
{
var code = ((HttpWebResponse)((WebException)ex).Response).StatusCode; // NotFound, etc
return false;
}
1.一個不存在的頁面不會導致一個異常,而是一個帶有404錯誤代碼的響應。 2.即使它拋出,捕捉每一個異常,假設它們都意味着該頁面不存在是非常糟糕的形式。 –
@Paul:同意。我剛剛重寫了OP的代碼。看我的編輯 - 你有什麼想法? – abatishchev
我能想到的測試Web資源存在的最佳方法是創建HEAD請求。這樣,人們就可以確認資源的存在,而無需付費來下載它。您可以通過將「WebRequest.Method」設置爲「HEAD」來發出HEAD請求 - 404的響應表明它不存在。 (一個人應該仔細處理Web服務器不支持'HEAD'方法的情況 - 也許是'GET'的回退。) –
- 1. 檢查是否顯示遠程圖像
- 2. 如何檢查遠程服務器映像是否存在?
- 3. ASP:檢查是否存在遠程圖像文件
- 4. 檢查是否存在遠程圖像PHP
- 5. 檢查圖像是否存在於遠程服務器問題
- 6. 檢查圖像是否存在於遠程站點ASP.NET VB
- 7. 如何動態檢查是否存在遠程字體圖標?
- 8. 如何在php中檢查是否存在大量的遠程圖像
- 9. 檢查組是否存在遠程
- 10. 檢查是否存在遠程文件
- 11. 遠程PHP getimagesize()/檢查是否存在
- 12. node.js檢查是否存在遠程URL
- 13. 如何檢查遠程圖像是否符合特定規格
- 14. 如何使用get_headers檢查遠程文件是否爲圖像
- 15. 如何檢查圖像視圖中是否存在圖像?
- 16. 如何檢查使用C#查看遠程文件是否存在?
- 17. DRb:如何檢查遠程對象是否存在?
- 18. 如何檢查遠程文件是否存在?
- 19. 檢查圖像是否存在Parse.com
- 20. 檢查圖像中是否存在Java
- 21. 檢查圖像是否存在
- 22. 檢查圖像是否存在
- 23. 檢查圖像是否存在cakephp
- 24. javascript檢查圖像是否存在
- 25. javascript/jquery檢查圖像是否存在?
- 26. 檢查圖像是否存在php
- 27. 檢查圖像是否在C空白#
- 28. PHP最便宜的方式如何檢查是否存在遠程映像
- 29. 如何檢查視圖是否存在?
- 30. 如何檢查視圖是否存在?
這裏有一個問題嗎? – Bryan
當你確定使用結果類型(並進行空檢查)時,使用'case',而不是運算符'as',即'(HttpWebResponse)request.GetResponse()' – abatishchev
這是問題還是答案? – Oded