wtorek, 3 czerwca 2008

HttpWebRequest i inni.

A więc dzisiaj potrzebowałem napisać aplikacyjkę do tray-a, żeby testować czy serwer działa - dłuższa historia po co. Pisany kod odczytywał jeden z plików z serwera i jeśli powiodło się, informował, że wszystko jest ok.

Niestety po kilku pętlach otrzymywałem exception Time out. Dochodzenie wskazało:

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url + "?a=" + DateTime.Now.Ticks);
wr.ContentType = "application/x-www-form-urlencoded";
wr.KeepAlive = false;
wr.Method = "GET";
wr.MaximumAutomaticRedirections = 5;
wr.AllowAutoRedirect = true;
wr.Timeout = 6000;
wr.ReadWriteTimeout = 6000;
wr.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
using (HttpWebResponse response = (HttpWebResponse)wr.GetResponse())
{
WebHeaderCollection headers = response.Headers;

if (response.StatusCode == HttpStatusCode.OK && !isLastVisible || isFirstTime)
{
isFirstTime = false;
ShowMessage("Serwis moto działa!", ToolTipIcon.Info);
isLastVisible = true;
ChangeIcon(true);
}
response.Close();
}

response.Close() -> winny. Prawdopodobnie response.Close() może zniknąć z tego kawałka bo using je wywoła samoczynnie, ale skoro teraz działa, to nie będę kombinował.