ich arbeite seit längerem an einem Programm welches auf ein XML-Interface zugreift und ganz einfach die Daten mit WebRequest ausliest. Mit Hilfe eines Timers werden auf der Form verschiedene Label mit den ausgelesen Werten aktualisiert . Klappt auch alles wie gewollt, nur gibt es ab und zu einen Error. Ich habe Ewigkeiten gedacht ich hätte das Problem gelöst, aber scheinbar war es ein ganz anderes Problem:
Ich bin zu dem Ergebnis gekommen, dass bei schlechter Internetverbindung (oder keiner) ein Error kommt. Jedoch habe ich noch keine Lösung gefunden den Error zu unterdrücken oder zu warten bis eine Verbindung da ist. Aber genug gelabert, vielleicht könnt ihr mir ja helfen:
Form1.cs:
Webseite test = new Webseite("http://www.meineseite.de/api-" + apikey + ".xml");
label1.Text = test.getGuthabenTotal() + "€";
Website.cs:
public Webseite(string url)
{
bool reply = CheckInternetConnection();
if (reply != false)
{
this.url = url;
//Webseite laden
WebRequest req = WebRequest.Create(this.url);
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
this.HTML = s;
//Tags entfernen
Regex textreplace = new Regex("(<[^>]*>)");
this.Text = textreplace.Replace(this.HTML, "");
}
}
public string getGuthabenTotal()
{
Regex titlematch = new Regex(@"(?≤<total.*>)([\s\S]*)(?=</total>)");
return titlematch.Match(this.HTML).ToString();
}
Die Funktion "CheckInternetConnection()" (s.o.) habe ich ausproniert ist jedoch keine effektive Lösung:
public static bool CheckInternetConnection()
{
Ping ping = new Ping();
try
{
PingReply reply = ping.Send("www.meineseite.de", 1000);
return reply.Status == IPStatus.Success;
}
catch
{
return false;
}
}
Der Error besagt, dass string in Regex nicht NULL sein darf, desshalb gehe ich davon aus, dass die Funktion Regex nicht ausgeführt werden kann, da der HTML Code dank schlechter Verbindung nicht ausgelesen wurde. Ziel wäre also Regex zu sagen, dass er nichts machen soll, wenn nichts vorhanden ist - bisher aber nicht gelöst bekommen.
Auf eine Antwort würde ich mich sehr freuen.
Mit freundlichen Grüßen,
Fl0
P.S. den genauen Error werde ich ggb. hinzufügen, wenn er wieder auftritt.