Escribo código C# 2.0 que debe hacer HTTP GET y POST básicos. Estoy usando System.Net.HttpWebRequest para enviar ambos tipos de solicitud y System.Net.HttpWebResponse para recibir ambos. Mi código para GET se parece a:Excepciones non-stop en C#
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("{0}?{1}",
URLToHit,
queryString));
request.Method = "GET";
request.Timeout = 1000; // set 1 sec. timeout
request.ProtocolVersion = HttpVersion.Version11; // use HTTP 1.1
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}
catch(WebException e)
{
// If I do anything except swallow the exception here,
// I end up in some sort of endless loop in which the same WebException
// keeps being re-thrown by the GetResponse method. The exception is always
// right (ie: in cases when I'm not connected to a network, it gives a
// timed out error, etc...), but it should not be re-thrown!
}
Y mi código postal es muy similar.
La última línea funciona bien cuando URLToHit devuelve un estado HTTP 200, pero en cualquier otra circunstancia (es decir, estado HTTP no 200, sin conectividad de red, etc.), se lanza una System.Net.WebException (que se espera, de acuerdo con los documentos de MSDN). Sin embargo, mi código nunca progresa más allá de esa línea.
Cuando intento depurar esto, me parece que no puedo pasar o continuar más allá de la última línea. Cuando intento hacerlo, la solicitud se vuelve a emitir y se vuelve a lanzar la excepción.
¿Alguna idea sobre lo que puedo hacer para que la solicitud solo se emita una vez? Nunca he visto algo así en ningún código basado en excepciones, y me he quedado sin ideas. Nada de esto sucede en otras partes de mi código, solo las partes que se ocupan de la funcionalidad y construcciones de System.Net.
Gracias!
(Actualización: añadido try/catch alrededor del método GetRequest)
por favor, publique el try/catch alrededor del código que está tratando – eglasius
Como un lado - puede encontrar 'WebClient' más fácil de usar que' HttpWebRequest'/'HttpWebResponse' - encapsula esto en métodos como' DownloadString' (GET) y 'UploadString' (POST). –
agregó el try/catch alrededor del método GetRequest (que es el que me causa un problema). Intenté todo, y lo único que resuelve mi problema es tragarme la excepción. ¡Ni siquiera puedo volver a lanzar una copia de WebException! Mismo problema con WebClient. – Aaron