5

誰かが HttpWebResponse と WebException の "StatusCode" プロパティの使用法を明確にするのを手伝ってくれますか?

たとえば、次のように思われます。

a) 例外がない場合、HttpWebResponse には、次の両方を示すいくつかの値を持つ StatusCode があります。 - 成功 (OK、Accepted など) - 失敗 (UseProxy、RequestTimeout など)

b) WebExeption スローがあり、それ自体が再び StatusCode を持つ応答オブジェクトを持っています (これは同じ HttpStatusCode Enumeration に基づいていると思います)。

質問 1 - どの StatusCode が WebException をトリガーするか (および例外内の詳細を取得するか) と、例外なしで返されるが、StatusCode の結果がわかるという点で一貫性はありますか?応答オブジェクト?

質問 2 - 具体的には、ユーザーの応答のカテゴリを区別するために httpWebRequest.GetResponse 呼び出しを処理しようとする疑似コード (または C# コード自体) は何ですか?

  • プロキシ設定/プロキシの問題=>ユーザーにプロキシ設定を修正するように指示できます

  • 接続の問題/Webサーバーのダウン=>ユーザーはこれを認識しています

  • サーバー側のエラー (例: サーバーは存在しますが、リクエストの処理に問題があります - 例: コンテンツが存在しません) => ユーザーはウェブサイト マネージャーで問題を提起できます

  • 成功例 (これは単なる OK ではないと思います) => na (成功例)

ありがとう

4

2 に答える 2

4

私の経験では、応答ステータス コードは 200 または 0 のみを返します。407 または 417 などのプロキシ エラーを含め、それ以外のものはすべて WebException を介して取得されます。

于 2010-02-02T10:07:35.463 に答える
4

Web リクエストを正常に実行できない場合は常に、WebException がスローされます。たとえば、400 および 500 シリーズの応答の場合。

WebExcpetion には、応答の実際のステータス、つまり 500 (Internal Server Error) を返す Status という名前のプロパティがあります。

すべての応答コードのリストは次のとおりです: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

================================================== =============================

一般に:

コードの 1xx 系列 = 暫定応答。これらはエラー コードではありません。たとえば、クライアントが要求を続行する必要があることを伝える 100 Continue 応答の場合。通常、WebRequest はそのような応答を返さず、残りの要求を送信することでそれ自体を処理します。

2xx 一連のコード = 要求が正常に受信され、理解され、受け入れられました。これらはエラー コードではありません。たとえば 200 OK の場合

3xx シリーズのコード = 追加のアクションを実行する必要があります。通常、これはエラー コード (通常はリダイレクト用) ではありません。たとえば、「301 Moved Permanently」は、要求されているリソースが新しい場所に移動されたことを意味するため、クライアントによるそれ以降の要求は、提供された新しい URL にある必要があります。応答で。

OR '305 Use Proxy'、あなたによると例外になります。

4xx 系列のコード = クライアント エラー。これらは例外になる可能性があります。たとえば、「400 Bad Request」または「401 Unauthorized」

5xx 系列のコード = サーバー エラー。これらは例外になる可能性があります。たとえば、「500 Internal Server Error」または「504 Gateway Timeout」の場合

于 2010-02-02T10:49:29.080 に答える