2016-03-14 2 views
0

Мой удаленный сервер бросает веб-исключение как плохой запрос. Но я знаю, что в ошибке больше информации, чем я. Если я посмотрю подробности из исключения, он не перечисляет фактическое содержание ответа. Я вижу только контент-тип, длину содержимого и кодировку содержимого. Если я запустил это же сообщение через другую библиотеку (например, restsharp), я увижу подробную информацию об исключении с удаленного сервера. Как получить дополнительную информацию из ответа, поскольку я знаю, что удаленный сервер отправляет их?Получение содержимого из исключения httpwebresponse

static string getXMLString(string xmlContent, string url) 
{ 
     //string Url; 
     string sResult; 
     //Url = ConfigurationManager.AppSettings["UserURl"] + url; 

     var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); 
     httpWebRequest.ContentType = "application/xml"; 
     httpWebRequest.Method = "POST"; 
     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
     { 
      streamWriter.Write(xmlContent); 
      streamWriter.Flush(); 
      streamWriter.Close(); 
      var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
      { 
       var result = streamReader.ReadToEnd(); 
       sResult = result; 
      } 
     } 
     return sResult; 
} 

ответ

1

EDIT: Вы пробовали с простой примерки уловом, чтобы увидеть, если вы можете получить более подробную информацию?

try 
{ 
    var response = (HttpWebResponse)(request.GetResponse()); 
} 
catch(Exception ex) 
{ 
    var response = (HttpWebResponse)ex.Response; 
} 

В моем RECHERCHES в ответ на вас, я заметил, что в коде есть что-то о кодировке, что вы не указали. Посмотрите here на пример с таким кодом.

var encoding = ASCIIEncoding.ASCII; 
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding)) 
{ 
    string responseText = reader.ReadToEnd(); 
} 

Или here, в документ, а также.

// Creates an HttpWebRequest with the specified URL. 
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); 
// Sends the HttpWebRequest and waits for the response.   
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 
// Gets the stream associated with the response. 
Stream receiveStream = myHttpWebResponse.GetResponseStream(); 
Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 
// Pipes the stream to a higher level stream reader with the required encoding format. 
StreamReader readStream = new StreamReader(receiveStream, encode); 
Console.WriteLine("\r\nResponse stream received."); 

Вы пробовали с такими?

+0

Проблема, с которой я столкнулась, - это вызов, вызывающий ошибку в строке, где ответ определен в первую очередь, поэтому у меня нет возможности захватить поток, потому что код уже назвал его ошибкой. (В этой строке: HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();) –

+0

Добавлена ​​правильная проверка ошибок, а затем это решение сработало. –

+0

Вы точно сделали проверку ошибок? Вы добавили попытку? – informaticienzero

Смежные вопросы