5

Est-ce que quelqu'un peut aider à clarifier l'utilisation de la propriété "StatusCode" dans HttpWebResponse et WebException?C# HttpWebRequest.GetResponse - Comment l'utilisation de StatusCode est-elle gérée pour une réponse non-exception vs webexception?

Par exemple, il semble que si:

a) il ne fait pas exception, le HttpWebResponse aura un StatusCode qui pourrait avoir des valeurs qui indiquent à la fois: - succès (par exemple, OK, accepté etc) - l'échec (par exemple UseProxy, RequestTimeout etc)

b) il y a une touche de WebExeption, qui a lui-même un objet de réponse qui a encore une StatusCode (qui je suppose est basé sur le même HttpStatusCode Enumeration.

question 1 - Existe-t-il une cohérence quant à ce que StatusCode va déclencher une exception WebException (et vous récupérerez le détail dans l'exception), par rapport à qui reviendrait sans exception, mais vous découvrirez le résultat dans le StatusCode de l'objet de réponse?

Question 2 - Ou plus précisément ce qui est le code pseduo (ou code C# lui-même) pour essayer de gérer un appel HttpWebRequest.GetResponse tel que vous voulez faire la différence entre les catégories de réponses pour l'utilisateur:

  • paramètres proxy/proxy question => peut donc dire utilisateur de fixer les paramètres de proxy

  • problème de connectivité/serveur Web vers le bas => si l'utilisateur est au courant de cette

  • erreur côté serveur (par ex. serveur est là, mais il y a un problème de gestion de la demande - par exemple le contenu pas là) => si l'utilisateur peut augmenter avec le gestionnaire de site

  • cas de succès (et je suppose que ce serait plus que le OK) => na (affaire succès)

grâce

Répondre

4

Dans mon expérience, le code d'état de réponse retourne seulement 200 ou 0. Tout le reste passe par le WebException, y compris les erreurs de proxy comme 407 ou 417.

4

WebException est levée lorsque la requête Web ne peut pas être exécutée correctement. Pour, par exemple, 400 et 500 séries de réponses.

WebExcpetion a une propriété nommée Status qui renvoie l'état actuel de la réponse, c'est-à-dire 500 (erreur interne du serveur).

Voici la liste de tous les codes de réponse: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

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

En général:

1xx série de code = réponse provisoire. Ce ne sont pas des codes d'erreur. Par exemple, la réponse 100 Continue qui indique que le client doit continuer avec sa demande.Généralement, WebRequest ne renvoie pas cette réponse et la gère elle-même en envoyant le reste de la demande.

2xx série de code = Demande reçue avec succès reçue, comprise et acceptée. Ce ne sont pas des codes d'erreur. Par exemple, OK

3xx series of code = D'autres actions doivent être entreprises. Par exemple, '301 Moved Permanently', ce qui signifie que la ressource en cours de requête est déplacée vers un nouvel emplacement, de sorte que toutes les demandes supplémentaires du client doivent être sur la nouvelle URL fournie. dans la réponse. OU '305 Utiliser le proxy', ce qui, selon vous, entraîne une exception.

4xx séries de code = erreurs client. Ceux-ci peuvent entraîner une exception. par exemple '400 Bad Request' ou '401 Non autorisé'

5xx series of code = Erreurs de serveur. Ceux-ci peuvent entraîner une exception. par exemple '500 Internal Server Error' ou '504 Gateway Timeout'

+0

Mais combien de codes retour possibles peut-il y avoir pour le cas de non-exception quand vous obtenez une réponse directement? Il y a un certain nombre de codes de réponse différents dans la gamme 200 par exemple. Ou la première réponse est-elle correcte en ce sens que seulement 200 ou 0 sont possibles pour le cas de non-exception? – Greg

+0

Réponse mise à jour. – ata

+0

Merci - cela signifie que je suppose que vous pouvez par exemple: réponse réussie (c'est-à-dire pas d'exception) mais un code d'état de 300 où dans l'ensemble, c'est toujours un problème pour l'utilisateur? C'est alors pour vérifier le vrai succès, vous devez vérifier WebException + vérifier le code d'état dans la gamme 200 alors? – Greg

Questions connexes