Planner: Added try catch around web request in the parser to prevent blowing up.

This commit is contained in:
Adam M Rivera 2012-04-25 13:38:05 -05:00
parent 03094a91b6
commit 75cb93ada7
1 changed files with 39 additions and 30 deletions

View File

@ -37,7 +37,7 @@ namespace ArdupilotMega.Utilities
foreach (string parameterLocation in parameterLocations) foreach (string parameterLocation in parameterLocations)
{ {
// Write the start element for this parameter location // Write the start element for this parameter location
objXmlTextWriter.WriteStartElement(parameterLocation); objXmlTextWriter.WriteStartElement(parameterLocation.ToLower().Contains("arducopter") ? MainV2.Firmwares.ArduCopter2.ToString() : MainV2.Firmwares.ArduPlane.ToString());
// Read and parse the content. // Read and parse the content.
string dataFromAddress = ReadDataFromAddress(parameterLocation); string dataFromAddress = ReadDataFromAddress(parameterLocation);
@ -273,6 +273,9 @@ namespace ArdupilotMega.Utilities
log.Info(address); log.Info(address);
// Make sure we don't blow up if the user is not connected or the endpoint is not available
try
{
var request = WebRequest.Create(address); var request = WebRequest.Create(address);
// Plenty of timeout // Plenty of timeout
@ -285,7 +288,7 @@ namespace ArdupilotMega.Utilities
using (var response = request.GetResponse()) using (var response = request.GetResponse())
{ {
// Display the status. // Display the status.
log.Info(((HttpWebResponse) response).StatusDescription); log.Info(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server. // Get the stream containing content returned by the server.
using (var dataStream = response.GetResponseStream()) using (var dataStream = response.GetResponseStream())
@ -314,5 +317,11 @@ namespace ArdupilotMega.Utilities
// Return the data // Return the data
return data; return data;
} }
catch (WebException ex)
{
log.Error(String.Format("The request to {0} failed.", address), ex);
}
return string.Empty;
}
} }
} }