В обох випадках респонс від сервера треба вивести + якщо стався еррор - припинити виконання.
Довго мучився з тим, як цього добитись - WebClient не має перегружених методів для отримання респонсу, він повертає тільки дані. Більше того, коли статус не починається з 2 - кидає ексепшн, відповідно даних не повертає взагалі.
В кінці рішення виявилось (як завжди) тривіальним - в WebException, який кидає WebClient є всі необхідні дані:
CODE
string response;
bool success;
WebClient webClient = new WebClient();
try
{
response = webClient.DownloadString("www.google.com");
success = true;
}
catch (WebException ex)
{
if (ex.Status == (WebExceptionStatus)500)
{
response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
success = false;
}
else
{
throw;
}
}
bool success;
WebClient webClient = new WebClient();
try
{
response = webClient.DownloadString("www.google.com");
success = true;
}
catch (WebException ex)
{
if (ex.Status == (WebExceptionStatus)500)
{
response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
success = false;
}
else
{
throw;
}
}