• 締切済み

HTTPエラーの確認

初めて質問させていただきます。 CreateObject("InternetExplorer.Application") を使用して、あるWEBページを開きます。 その際に、ネットワーク障害などでHTTPエラーが 表示される事があります。 正常に表示されたか、HTTPエラーが出ているか 判別する要素はないでしょうか? こちらがやりたい事は 1.WEBページを開く 2.正常に取得できた場合はそのイメージを印刷 3.httpエラーが出た場合は「現在表示できません」の  別ファイルを印刷 です。 わかりにくいかも知れませんが、ご存知の方ご教授 願います。

みんなの回答

  • run_away
  • ベストアンサー率42% (8/19)
回答No.2

HTTPのResponseで200が得られれば成功、それ以外なら失敗。

参考URL:
http://www.mars.dti.ne.jp/~torao/rfc/rfc2068-ja.html
Umaru
質問者

補足

お答えありがとうございます。 VbでのHTTPのResponse取得はどうやればよいのでしょう?

noname#102878
noname#102878
回答No.1

フォーム上にWebBrowserコントロールを配置してるんじゃないんですよね。 すり合わせの意味も込めて最初から書きます。 [プロジェクト]-[参照設定]で「Microsoft Internet Controls」にチェックを入れます。 Form1にテキストボックス(Text1)を配置。 同じくコマンドボタン(Command1)を配置。 Form1のコードモジュールに以下を記述。 ---- ここから ---- Option Explicit 'IEのイベントを受け取るための宣言 Private WithEvents IE As InternetExplorer Private Sub Command1_Click() '指定されたURLに移動 Set IE = CreateObject("InternetExplorer.Application") IE.Navigate2 "http://www.hoge.co.jp/" End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 'フォーム終了時、IEも閉じる If Not IE Is Nothing Then IE.Quit Set IE = Nothing End If End Sub 'DocumentCompleteは、IEがHTML文書を読みこみ終わった時に発生するイベント Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant) MsgBox "正常表示!!" Text1.Text = pDisp.Document.documentElement.outerHTML End Sub Private Sub IE_NavigateError(ByVal pDisp As Object, URL As Variant, Frame As Variant, StatusCode As Variant, Cancel As Boolean) MsgBox "エラー発生!!" End Sub ---- ここまで ---- ただし、実験では「不正なURL(いわゆる404エラー)」のケースしか試していないので、質問にあるような「正常に表示されなかった場合」すべてをカバーできるかどうかはわかりません(~_~;; HTTP上でのやりとりを取得できればHTTPのエラーコードを読み取って「200エラー(いわゆる正常エラー)かどうか」とかで判断できそうな気もしますが。 昔のVBマガジンか日経ソフトウェアにHTTPのやりとりを取得するサンプルがあった気がするけど、かなり昔なので押し入れの中だし・・・