private byte[] Fetch(string url)
{
WebRequest wq = WebRequest.Create(url);
var httpWebRequest = wq as HttpWebRequest;
if (httpWebRequest != null)
{
httpWebRequest.UserAgent = UserAgent;
httpWebRequest.Referer = m_referer;
httpWebRequest.KeepAlive = false;
httpWebRequest.AllowAutoRedirect = true;
httpWebRequest.Timeout = 5000;
}
byte[] ret;
using (WebResponse resp = wq.GetResponse())
{
if (resp.ContentType.StartsWith("image", StringComparison.OrdinalIgnoreCase))
{
using (Stream responseStream = resp.GetResponseStream())
{
ret = Utilities.ReadFully(responseStream);
if (responseStream != null)
{
responseStream.Close();
}
}
}
else
{
string message = ComposeErrorMessage(resp, url);
if (m_logger.IsDebugEnabled)
{
m_logger.DebugFormat("Error fetching tile: {0}", message);
}
throw (new Web.WebResponseFormatException(message, null));
}
resp.Close();
}
return ret;
}