2008年4月22日火曜日

HTTP プロトコルでのエラーの取り扱い方

http://www.nsoftware.com/kb/showentry.aspx?entry=12049701

該当製品:


  • IP*Works!


現象:


HTTP コントロールを使用して VB アプリケーションを開発しています。大抵の場合このアプリケーションはうまく動作するのですが、たまにタイムアウトとかエラーコード 404 などプロトコル関連のエラーが発生します。そこで私はエラー条件を取り扱うコードを書き始めなくてはなりません。

良くあるエラーを取り扱うのに必要な手段や情報、あるいはやらなければならない事ややってはならない事
などの情報はありますか?

解決法:


まず、StatusLine プロパティをチェックすることでサーバ応答の最初の行をチェックできます。サーバが 3xx (リダイレクション)や 4xx(クライアントエラー) あるいは 5xx (サーバエラー) といったエラーコードを返す場合、HTTP コントロールはこのエラーをユーザに対し提示します。

またコントロールは エラー 20152 (Visual Basic/ActiveX Edition) または 151 (その他のエディション) をテキスト 'xxx Error Description' (ここで 'xxx' は3桁の HTTP エラーコード) を返すことがあります。

サーバから返される最も重要なエラーコードを以下に示しておきます。HTTP プロトコルの詳細については コントロールのプロパティのヘルプファイルの他、RFC 文書を参照して下さい。
301 Moved Permanently
302 Moved Temporarily
303 See Other

上記3つは全て、Header イベント内の Field パラメータ 'Location' の値の URL へとリダイレクトします。(フィールドは大文字小文字を区別しませんが、その場所 (location) は大文字小文字を区別します。) FollowRedirects プロパティを設定することで、これらのリダイレクト指定を自動的に実行させることができます。
304 Not changed

Get アクション内で NotModifiedSince プロパティが使用された場合にのみ送られてきます。
400 Bad Request

リクエストに誤りがあります。リクエストを修正してください。
401 Unauthorized

当該リクエストにはユーザ認証が必要です。User プロパティおよび Password プロパティを使用してください。
403 Forbidden

サーバはリクエストを解釈しましたが、応答を拒否しています。サーバから詳細情報がないかメッセージをチェックしてください。
404 Not Found

Request-URL に一致するものがサーバ側に見つかりませんでした。
500 Internal Server Error

サーバがリクエストの処理中に、それを妨げる予期せぬ状況に遭遇しました。
501 Not Implemented

サーバは当該リクエストを処理する機能をサポートしていません。
503 Service Unavailable

過負荷あるいはサーバメンテナンスのため、サーバは現在当該リクエストを処理することができません。

コントロールのプロパティについてはヘルプファイルを、また HTTP プロトコルについては RFC を参照して下さい。

0 件のコメント: