ファイルのダウンロード時のエラーの処理について

このQ&Aのポイント
  • ファイルのダウンロード時に発生するエラーに対する処理方法について質問です。
  • エラーが発生した場合の具体的なエラー番号やエラーの状態をプログラム内で取得する方法について教えてください。
  • 良いエラーハンドリング方法があれば、教えていただきたいです。
回答を見る
  • ベストアンサー

ファイルのダウンロード時のエラーの処理について

Dim wc As New System.Net.WebClient wc.DownloadFile("http://oshiete1.goo.ne.jp/images_goo/goo.gif", "C:\goo.gif") というコードでファイルをダウンロードする場合に ファイルが存在すれば良いのですが、 指定の場所に指定のファイルがなかった場合や 指定したサーバー自体が見当たらない場合や、 返答がなく異常に時間がかかった場合の処理をしたいです。 on Error goto を使うとエラー番号で[5]が出るのですが、 エラールーチンを設けないとデバッグのメッセージで サーバー関係のエラーのメッセージ(404とか)が表示されるのですが、 そのような具体的なエラー番号やエラーの状態をプログラム内で 得るにはどうしたら出来るでしょうか。 何か良い方法がありましたら、ご教示頂きたく、お願い致します。m(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

> サーバー関係のエラーのメッセージ(404とか)が表示されるのですが、 それは、404と言う番号を含めて単なるエラーメッセージですので、 On Errorでエラートラップをかけたなら、 「Err.Description」で参照できます。

popopompom
質問者

お礼

ありがとうございます。 そうでしたか。 Err.Descriptionの方法でやってみることにします。

関連するQ&A

  • ファイルのダウンドードでエラー

    ファイルのダウンドードでエラー あるサイトを参考にファイルをダウンドードするプログラムを組んだのですが、 「リモート サーバーがエラーを返しました: (401) 許可されていません 」 のエラーが出てしまいます。 調べてはいますが、どう直せばいいのか分からない状況です。 どなたか教えてください。 以下ソース(C#です) ------------------------------------------------------------------ System.Net.WebClient wc = new System.Net.WebClient(); string uri = "http://192.168.0.xx/TestService/Excel/pick.xls"; string file = "pick.xls"; wc.DownloadFile(uri,file); wc.Dispose(); ------------------------------------------------------------------ エラー内容 ------------------------------------------------------------------ リモート サーバーがエラーを返しました: (401) 許可されていません 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.Net.WebException: リモート サーバーがエラーを返しました: (401) 許可されていません ------------------------------------------------------------------

  • c# なぜ警告が出るのか、教えて下さい

    http://dobon.net/vb/dotnet/internet/downloadfile.html の「同期的にファイルをダウンロードし保存する」の例文、 System.Net.WebClient wc = new System.Net.WebClient(); wc.DownloadFile(jczurl, @"c:\test.xml"); wc.Dispose(); を書くと、 1行目「System.Net.WebClient wc」の「wc」は「';' が必要です。」と怒られ、 2行目「jczurl, @"c:\test.xml"」の@の次の「"」は「無効な文字です。」と怒られてしまいます。 無知ですみませんが、理由を教えて下さい。 宜しくお願い致します。

  • VB2005で「ファイルのダウンロード」のダイアログをVBで操作したい。

    初歩的な質問だとは思いますが、どうか回答お願いします。 VB2005でwebからファイルを自動でダウンロードするアプリ を作ろうとしています。 http://www.hogehoge.com/hogehoge.jpg からのダウンロードの仕方は Dim wc As New System.Net.WebClient() wc.DownloadFile("http://www.hogehoge.com/hogehoge.jpg", "c:\hogehoge.gif") でうまくいくのですが、 http://www.hoge.com/code=xxxx/download のようなURLの場合は上記の方法ではうまくいきませんでした。 そこで webbrowser1.navigate("http://www.hoge.com/code=xxxx/download ") を実行後「ファイルのオダウンロード」のダイアログが 表示されるので、VBからそのダイアログを操作して ファイルを保存しようと思いましたが、やり方が全然思いつきませんでした(T△T) どのようにすればよいかご教授ください。 よろしくお願いしますm(_ _)m

  • ProgressBarについて

    私はVB2008を使ってます。 質問ですが、 Button1でクリック後、以下のイベントについてなんですが、 Dim wc As New System.Net.WebClient() wc.DownloadFile("http://localhost/image.gif", "c:\test.gif") wc.Dispose() または・・・ My.Computer.Network.DownloadFile( _ "http://localhost/image.gif", "C:\image.gif", _ "username", "password", _ True, 60000, True, FileIO.UICancelOption.DoNothing) 等を使ってダウンロードの進行状況をProgressBarで現したいのですが、 可能でしょうか? それと同時にラベル1に(0%)等の進行度も表示させたいと思ってます。 この方法が何処を検索しても出ません・・・。 同じ様な検索でテキストにURLを貼り付けて、Button1を押してProgressを動かし、ダウンロードするというのがありましたが、 この質問は、ソースに直接http://...を上記のソースと同じ様に 記述したい場合、どうすれば良いですか? どなたか教えて頂けませんか?

  • DownloadFileを連続使用するとエラーが?

    ごく一般的な方法でイメージファイルをダウンロードしています WebClient wc1 = new System.Net.WebClient(); try { wc1.DownloadFile(@"http://MySite.web.fc2.com/MyImage.jpg",@"c:\MyImage.jpg"); } catch { MessageBox.Show("DownLoad エラー"); } finally { wc1.Dispose(); } 最初の2~3回は正常に動作します でもその後はエラーが連続してしまいます 3分程度の時間間隔を置くと正常に戻ります しかしまたエラーが連続する状態に戻ってしまいます 上記のサンプレではFC2を使用していますがOCNでも同様です 疑問? (1)そもそもDownloadFileは連続使用してはならないものなのでしょうか? でもそんな注意書きは何処にもありません (2)何らかのエラー回避法があれば教えてください お願い致します、ワンワンわぁわぁ~わぁ~ん~!!!

  • サーバーにアップロードしたい

    このサイトに http://dobon.net/vb/dotnet/internet/ftpwebclient.html WebClientを使ってFTPサーバーからファイルをダウンロード、アップロードするというのがあります これを参考に実行して見ますと、ダウンロードはうまくいくんですが、アップロードがうまくいきません。 そのプログラムは 'WebClientオブジェクトを作成 Dim wc As New System.Net.WebClient() 'ログインユーザー名とパスワードを指定 wc.Credentials = New System.Net.NetworkCredential("username", "password") 'FTPサーバーにアップロード wc.UploadFile("ftp://localhost/test.txt", "C:\test.txt") '解放する wc.Dispose( と、非常にシンプルです。なんでうまくいかないんでしょうか?

  • on error 処理に関して

    on error goto での処理ルーチン内で、 さらに on error goto を出すことは可能でしょうか。 それとも、一度on errorを設定すると、エラーが発生した後では変更は不可なのでしょうか。 やりたいことは、 1回目と、2回目、3回目以降でやることとを変えたいのです。 例えば、メッセージを変えるとか。 この場合、 エラー処理の中で、何回目かを聞くことで、メッセージを変えることは出来ると思うのですが、 それはやらず、 他にも色々やることが多いので、別処理として飛びたいのです。 以下のようなイメージです。 err1: on error goto err2 resume next err2: on error goto err3 resume next err3: resume next 宜しくお願いします。

  • C#でDownloadFileAsync

    最近C#のプログラミングの勉強を始めました。 ファイルをWEB上からダウンロードする方法についての質問です。 以下のコードを使って、HTMLファイルをDLすることは問題なくできました。 System.Net.WebClient wc = new System.Net.WebClient(); Uri url = new Uri("http://okwave.jp/"); string filename = "tempfile.html"; wc.DownloadFile(url, filename); しかし、以下のように非同期のメソッドにした場合、うまくファイルがDLされません。 System.Net.WebClient wc = new System.Net.WebClient(); Uri url = new Uri("http://okwave.jp/"); string filename = "tempfile.html"; wc.DownloadFileAsync(url, filename); なおDLされないというのは、コンパイルも通るし例外も出ないし tempfile.htmlというファイル自体は作成されるのですが、 サイズが0KBの空っぽのものになってしまうという意味です。 後半のソースも、どこかのサイトからほぼコピペしてきたものなのですが、 何か重大な見逃しをしているのか、設定が悪いのか、 いろいろネットをあたってもそれらしい解決策は得られませんでした。 .Netにあまりなじみがないのでくだらないミスをしているのかもしれませんが、 行き詰ってしまいましたので皆様のお知恵をお借りできればと思います。 よろしくお願いします。 環境 Win8 64bit Visual Studio Express 2012 for Win Desktop ↑特に設定いじってなし

  • WebClientの文字列送信にてエラー

    .net のWebClientを使用して文字列をアップロードしているのですが、上手くいかず以下のようなエラーが返されます。 エラー内容:「サーバーによってプロトコル違反が発生しました. Section=ResponseHeader Detail=ヘッダー名が無効です。」 [環境] VS2005 VB.NET [ロジック] Using wc As New System.Net.WebClient wc.Encoding = System.Text.Encoding.GetEncoding("shift_jis") wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded") wc.Credentials = New System.Net.NetworkCredential(user,pass) Dim url As New System.Uri("http://指定のURL") Dim returnvalue As String = wc.UploadString(url, "POST", "送信文字列") End Using 補足ですが、通信にはベーシック認証を使用していますが、ユーザー・パスは問題ありません。 UploadStringAsyncを使用すれば文字送信はできています。 通信結果をサーバーより取得するためUploadStringを使用しています。 どなたか解決策をご存知の方はご教授いただきたいと思います。 宜しくお願い致します。

  • EXCEL VBA のエラー処理

    EXCEL VBA でセルの文字列を読み(基本的に2007/05/08のような日付データが入っている)、 もしそれ以外のデータ("あいう"のような文字列)が入っていた場合はエラールーチンに飛ばして処理をしようと思ったのですが、 エラーが発生して、発生箇所が黄色く反転表示され、止まったままになってしまいます。 エラールーチンに飛ばすためにはどうしたらいいのでしょうか? Sub test() Dim LineNo As Integer Dim WrkDate As Date On Error GoTo Err LineNo = 1 WrkDate = Range("S" & LineNo).Value ←ここが黄色く反転表示される。 WrkDate = WrkDate + 7 Range("X" & LineNo).Value = WrkDate GoTo Owari Err: (処理ルーチン) Owari: End Sub

専門家に質問してみよう