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. 检查图像是否存在于远程服务器问题
- 5. 检查是否存在远程图像PHP
- 6. 如何动态检查是否存在远程字体图标?
- 7. 如何在php中检查是否存在大量的远程图像
- 8. 检查组是否存在远程
- 9. node.js检查是否存在远程URL
- 10. 检查是否存在远程文件
- 11. 如何使用get_headers检查远程文件是否为图像
- 12. 如何检查远程图像是否符合特定规格
- 13. 如何检查图像视图中是否存在图像?
- 14. 如何检查使用C#查看远程文件是否存在?
- 15. 检查图像是否存在Parse.com
- 16. 检查图像是否存在cakephp
- 17. 检查图像中是否存在Java
- 18. 检查图像是否存在
- 19. 检查图像是否存在php
- 20. DRb:如何检查远程对象是否存在?
- 21. 如何检查远程文件是否存在?
- 22. 检查图像是否在C空白#
- 23. PHP最便宜的方式如何检查是否存在远程映像
- 24. 下载前检查图像是否存在于远程服务器
- 25. 快速检查远程服务器上是否存在图像的方法
- 26. 如何在设置之前检查图像是否存在?
- 27. 检查远程URL是否有有效的图像扩展
- 28. 如何检查远程UDP端口是否打开? C
- 29. 检查数据库中是否存在图像C#windows窗体
- 30. 如何检查图像源是否存在
这里有一个问题吗? – Bryan
当你确定使用结果类型(并进行空检查)时,使用'case',而不是运算符'as',即'(HttpWebResponse)request.GetResponse()' – abatishchev
这是问题还是答案? – Oded