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
ウェブリソースの存在をテストするために私が考えることができる最良の方法は、HEADリクエストを作成することです。そうすれば、リソースをダウンロードするために価格を支払うことなくリソースの存在を確認できます。 'WebRequest.Method'を「HEAD」に設定することでHEAD要求を行うことができます - 404の応答はそれが存在しないことを示します。 (「HEAD」メソッドがWebサーバによってサポートされていない場合は、おそらく「GET」へのフォールバックを扱うべきです) –
- 1. 画像がキャッシュピカソに存在するか確認する
- 2. C#、asp.netで一度に複数の画像をアップロード中にその画像が既に存在するかどうかを確認する方法
- 3. 現在アクティビティインスタンスが存在するかどうかを確認する方法
- 4. C++にbmpファイルが存在するか確認する
- 5. リモートMySQLサーバーが有効で存在することを確認するには
- 6. Qwidgetが存在することを確認する方法
- 7. C/C++ - Mac OS X - ファイルが存在するかどうかを確認する
- 8. シリアルポートが存在するかどうかを確認する、Linux C/C++
- 9. データベースがSQL Serverに存在するかどうかを確認する方法?
- 10. windowsstore appにファイルが存在するかどうかを確認する方法
- 11. mysqlデータベースが存在するかどうかを確認する方法
- 12. Cassandraテーブルが存在するかどうかを確認する方法
- 13. メモリマップファイルが存在するかどうかを確認する方法は?
- 14. Selenium - リストボックスにテキストが存在するかどうかを確認する方法
- 15. PECL拡張が存在するかどうかを確認する方法は?
- 16. フラグメントが存在するかどうかを確認する方法?
- 17. CloudBlobDirectoryが存在するかどうかを確認する方法は?
- 18. アイテムがCache(System.Web.Cache)に存在するかどうかを確認する方法?
- 19. ディープアレイ値が存在するかどうかを確認する方法
- 20. レジストリキーが存在するかどうかを確認する方法
- 21. Ruby on Rails:モデルが存在するかどうかを確認する方法
- 22. 通知が既に存在するかどうかを確認する方法?
- 23. ファイル+フォルダツリーが存在するかどうかを確認する方法
- 24. AlbumArtが存在するかどうかを確認する方法は?
- 25. GraphicsEnvironmentが存在するかどうかを確認する方法
- 26. ページが存在するかどうかを確認する方法?
- 27. プロパティが存在するかどうかを確認する方法?
- 28. クラスが存在するかどうかを確認する方法
- 29. Javascript:Webページにテキストが存在するかどうかを確認する方法
- 30. アクティビティがアンドロイドに存在するかどうかを確認する方法
ここに質問がありますか? – Bryan
結果の型になっていることを確認したら、演算子 'as'ではなく、' case'を使用します。つまり、(HttpWebResponse)request.GetResponse() ' – abatishchev
これは質問ですか? – Oded