private static int GetStatusCode(WebClient client) { FieldInfo responseField = client.GetType().GetField("m_WebResponse", BindingFlags.Instance | BindingFlags.NonPublic); if (responseField != null) { HttpWebResponse response = responseField.GetValue(client) as HttpWebResponse; if (response != null) { return (int)response.StatusCode; } } return 0; }
/// <summary> /// Gets the status information of a WebClient. /// </summary> /// <param name="client">The WebClient object</param> /// <param name="statusDescription">Status description</param> /// <param name="statusCode">The HTTP status code</param> /// <returns></returns> private static void GetStatusDetails(WebClient client, out string statusDescription, out int statusCode) { var responseField = client.GetType().GetField("m_WebResponse", BindingFlags.Instance | BindingFlags.NonPublic); var response = responseField?.GetValue(client) as HttpWebResponse; if (response != null) { statusDescription = response.StatusDescription; statusCode = Convert.ToInt32(response.StatusCode); return; } statusDescription = null; statusCode = 400; }