Exempelkod i C# för att hämta temperaturer från temperatur.n
Postat: 07 feb 2008, 11:33
Det dök upp ett mail med kod som kan användas för att hämta temperaturer från temperatur.nu.
Någon kankse är intresserad?
Koden är skriven av Johan Olofsson
Någon kankse är intresserad?
Kod: Markera allt
using System;
using System.IO;
using System.Net;
using System.Globalization;
using System.Text.RegularExpressions;
namespace EurofireControl
{
public class Temp
{
protected static Regex termoPattern = new Regex(@"Time[:][ ](\d{2}[:]\d{2})[,][ ]Date[:][ ](\d{2}[ ][a-zA-Z]{3}[ ]\d{4})[,][ ]Temp[:][ ]([-]?[0-9\.]+)", RegexOptions.Compiled|RegexOptions.IgnoreCase);
public static bool GetCurrentTemp(out DateTime date, out double temp)
{
bool fStatus = false;
date = DateTime.MinValue;
temp = 0.0;
// reads temp from temperatur.nu, expected format:
// Time: 22:07, Date: 09 Jan 2008, Temp: 2.6°C
try
{
WebRequest wr = HttpWebRequest.Create("http://www.temperatur.nu/termo/sollentuna/termo.txt");
wr.Method = "GET";
wr.Timeout = 10000;
using(WebResponse resp = wr.GetResponse())
{
using(Stream s = resp.GetResponseStream())
{
StreamReader sr = new StreamReader(s);
String termoLine = sr.ReadToEnd();
sr.Close();
Match termoMatch = termoPattern.Match(termoLine);
if(termoMatch.Success)
{
CultureInfo ci = new CultureInfo("en-US");
string dateTimeString = String.Format("{0} {1}", termoMatch.Groups[2].Value, termoMatch.Groups[1].Value);
date = DateTime.ParseExact(dateTimeString, "dd MMM yyyy HH:mm", ci);
ci.NumberFormat.NumberDecimalSeparator = ".";
temp = double.Parse(termoMatch.Groups[3].Value, NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint, ci);
fStatus = true;
}
}
resp.Close();
}
}
catch(Exception)
{
}
return fStatus;
}
}
}