private XmlElement GetFeedXml()
{
try
{
// Create a web request to get the xml feed
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(GmailUri);
request.Method = "GET";
request.Credentials = new NetworkCredential(_userName, _password);
XmlDocument xml = null;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// If the request/response is successful
if (response.StatusCode == HttpStatusCode.OK)
{
// Get the response stream containing the xml
using (XmlTextReader reader = new XmlTextReader(response.GetResponseStream()))
{
// Load the XSLT document (it's an embedded resource)
byte[] data = Encoding.ASCII.GetBytes(GmailReader.Properties.Resources.GmailTransform);
using (MemoryStream xsltStream = new MemoryStream(data))
{
// Create a text reader with the XSLT document
XmlTextReader stylesheetReader = new XmlTextReader(xsltStream);
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(stylesheetReader);
// Run an XSLT transform on the google feed to get an xml structure
// that can be deserialized into a GmailList object
using (MemoryStream ms = new MemoryStream())
{
transform.Transform(new XPathDocument(reader), null, ms);
ms.Seek(0, SeekOrigin.Begin);
xml = new XmlDocument();
// Load the transformed xml
xml.Load(ms);
}
}
}
}
response.Close();
return xml.DocumentElement;
}
catch
{
}
return null;
}
#region IDisposable Members