2013-08-23 10 views
11

Questo è il mio codice:HttpWebRequest accettare 500 Internal Server Error

HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; 

WebResponse wr = req.GetResponse(); 

Quando il server restituisce 500 Internal Server Error, viene generata un'eccezione in req.GetResponse(). Vorrei che GetResponse() accettasse questo codice di risposta, è normale che l'url passato lanci questo codice di risposta. Vorrei analizzare l'Html nonostante il codice di risposta 500 Errore interno del server. È possibile dire al metodo GetResponse() di non verificare il codice di risposta?

+0

vostre domande non hanno senso per me. HttpWebRequest.GetResponse() non fa nulla di speciale quando riceve un codice di risposta 500. Sei libero di analizzare l'html che ricevi. –

+0

È necessario utilizzare la nuova classe [HttpClient] (http://msdn.microsoft.com/en-us/library/system.net.http.httpclient.aspx). – glautrou

+0

Ho modificato il tuo titolo. Per favore vedi, "[Le domande dovrebbero includere" tag "nei loro titoli?] (Http://meta.stackexchange.com/questions/19190/)", dove il consenso è "no, non dovrebbero". –

risposta

39
try 
{ 
    HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; 

    WebResponse wr = req.GetResponse(); 
} 
catch (WebException wex) 
{ 
    var pageContent = new StreamReader(wex.Response.GetResponseStream()) 
          .ReadToEnd(); 
} 
+1

Incredibile, grazie! – Darxis

+0

Grazie mille! – b729sefc

+0

Questo è fantastico !!! Mi hai appena salvato così tanto tempo !!! – Dmytro

0

ho risolto con questo codice:

class Program 
{ 
    static void Main(string[] args) 
    { 
     var soap = @"<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tem=""http://tempuri.org/""><s:Body><GetData xmlns = ""http://tempuri.org/""><value>2</value></GetData></s:Body></s:Envelope>"; 

     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"http://localhost:51148/Service1.svc"); 

     req.Headers.Add($"SOAPAction", "http://tempuri.org/IService1/GetData"); 
     req.ContentType = "text/xml;charset=\"utf-8\""; 

     byte[] data = System.Text.Encoding.UTF8.GetBytes(soap); 
     req.ContentLength = data.Length; 

     req.Accept = "text/xml"; 
     req.Method = "POST"; 

     Stream stm = req.GetRequestStream(); 
     stm.Write(data, 0, data.Length); 

     try 
     { 

      WebResponse response = req.GetResponse(); 
      Stream responseStream = response.GetResponseStream(); 
     } 
     catch (WebException webex) 
     { 
      WebResponse errResp = webex.Response; 
      using (Stream respStream = errResp.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(respStream); 
       string text = reader.ReadToEnd(); 
      } 
     } 
    } 
} 
Problemi correlati