net 4 and c#.
I need a Class able to return a Bool value if an Uri (string) return HTTP status codes 200.
At the moment I have this code (it work using try to see if it is possible connect to the Uri) but I would like implemented with “HttpStatusCode.OK” instead.
- Do you know a better approach?
Thanks.
public static bool IsReachableUri(string uriInput)
{
// Variable to Return
bool testStatus;
// Create a request for the URL.
WebRequest request = WebRequest.Create(uriInput);
request.Timeout = 15000; // 15 Sec
WebResponse response;
try
{
response = request.GetResponse();
testStatus = true; // Uri does exist
response.Close();
}
catch (Exception)
{
testStatus = false; // Uri does not exist
}
// Result
return testStatus;
}
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Well, firstly it would be better to have a using statement for your response instead of just calling Close – in this case there’s not much difference, but in general using statements are the way to go.
As for testing the result status – just cast the response to HttpWebResponse and then use the StatusCode property. Something like this:
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Timeout = 15000;
request.Method = "HEAD"; // As per Lasse's comment
try
{
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
return response.StatusCode == HttpStatusCode.OK;
}
}
catch (WebException)
{
return false;
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0