[VB.NET] String aus Quelltext auslesen

06/27/2012 17:45 Harry Fan8#1
Hallo zusammen,

ich mache gerade ein Programm was den Serverstatus eines Servers überprüfen soll. Nur hab ich jetzt das Problem, dass er z.B. den Text: "Offline" im Quellcode nicht finden kann, und mir dann als Text false wiedergibt. Um das zu vermeiden hab ich eine If-Anweisung angelegt, was überprüfen soll, das wenn quelle = false ist den Status Offline anzeigt, und wenn true, Online anzeigt.
Nur kann da was irgendwie nicht stimmen, denn hab das Gefühl, dass er den String: "Offline" im Quellcode gar nicht findet und dann false wiedergibt.

Hier ist der Code:
Code:
Dim quelle As String = Me.WebBrowser1.DocumentText.Contains("OFFLINE")
Label3.Text = quelle

        If quelle = False Then
            Label3.ForeColor = Color.Red
            Label3.Text = "OFFLINE"
            Timer1.Start()
        ElseIf quelle = True Then
            Label3.ForeColor = Color.Green
            Label3.Text = "ONLINE"
            Timer1.Start()
        End If
Kann mir jemand vielleicht weiterhelfen?

Danke im vorraus.

MfG
Harry_Fan8
06/27/2012 18:08 Xijezu#2
Quote:
Originally Posted by Harry Fan8 View Post
Nur kann da was irgendwie nicht stimmen, denn hab das Gefühl, dass er den String: "Offline" im Quellcode gar nicht findet und dann false wiedergibt.
Denk' daran, das "Contains" die Groß- und Kleinschreibung berücksichtigt.

Code:
this.WebBrowser1.DocumentText.ToLower().Contains("offline")
wäre somit eine alternative.
06/27/2012 18:14 Harry Fan8#3
Muss der, wenn er das Wort findet nicht eig. true wiedergeben? Denn wenn ich deine Methode benutze kommt das gleiche raus wie bei mir.
06/27/2012 18:20 Kraizy​#4
Lass dir doch mal den Quelltext ausgeben, klatsch den in den Notepad rein und dann such mal mit STRG+F ob es da sowas wie "offline" gibt. Aber wenn es mit Contains() nicht klappt, dann ist es ja wohl auch nicht vorhanden..
06/27/2012 18:24 Harry Fan8#5
Hmm.. naja, ist das unbedingt nötig? ^^
Denn im Quellcode erscheint auch Offline. Nur wenn er das überprüft kommt immer der Wert false raus statt true.

Hier ist die URL vom Server Status:
[Only registered and activated users can see links. Click Here To Register...]

#edit: habs mal getestet, und hab dort den Status auf Online gesetzt, aber dennoch bleibt er beim Programm auf Offline. Weiß vllt. jemand weiter? :/

MfG
06/27/2012 18:47 tobindev#6
Vergiss den Webbrowser, denn wenn du [Only registered and activated users can see links. Click Here To Register...] mit einem Webbrowser aufrufst wirst du ja automatisch zur Startseite weitergeleitet. Verwende daher lieber HttpWebRequest und dann per GetResponse den erhaltenen Quelltext nach online/offline checken.
06/27/2012 18:52 Harry Fan8#7
Ja, das liegt daran, dass man nicht registriert ist, man muss sich registrieren und dabei eingeloggt sein, um die Seite zu sehen.

Der Quelltext der Webseite sieht wie folgt aus:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:IE>

<head>
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta name="MSSmartTagsPreventParsing" content="TRUE">
<title>06scape - Server Status</title>
<link href="../css/basic-3.css" rel="stylesheet" type="text/css" media="all">
<link href="http://www.06scape.com/img/favicon.ico" rel="shortcut icon">
<link href="http://www.06scape.com/css/main/title-5.css" rel="stylesheet" type="text/css" media="all">
<link href="http://www.06scape.com/css/kbase-2.css" rel="stylesheet" type="text/css" media="all" />
<style type="text/css">
.contentc { padding-bottom: 15px; text-align: center; float: left; width: 33.33333%; }
</style>
</head>

	<body style="background-image:url('http://www.06scape.com/img/backgrounds/bg-1.jpg');">
		<div id="body">
		<div class="frame e">
			<span style="float: right;">
			<a href="http://www.06scape.com/title.ws">Main Page</a> | <a href="http://www.06scape.com/logout.ws">Logout</a>
			</span>
			<div>You are logged in as <span style="color: rgb(255, 187, 34);">Harry Fan8</span>&nbsp;&nbsp;&nbsp;<span style="color: red;">Do NOT go to 2006scape.com</span>
			</div>
		   </div>		<br />
		<div style="text-align: center; background: none;">
				<div class="titleframe e">
					<b>Server Status</b><br><a href="http://www.06scape.com/title.ws">Main Menu</a><br />
				</div>
			</div>
        <br /><br />
		<div class="frame e" style="overflow:auto;"><br>
			<div style='text-align: center; width: 50%; margin: 0 auto;'>
				The server is currently: <br /><br />
				<span style='font-size: 15pt; color: red;'><b>OFFLINE</b></span><br />Note: This does not necessarily mean you will be able to log in.<br /><br />
			</div>
		</div>
		
		</div>
		</body>
	</html>
P.S.: Könntest du mir ein Beispiel nennen? Bin noch nicht so ein wirklicher Profi in VB. :)

MfG
06/27/2012 19:42 tobindev#8
Hier findest du etwas zur Post-Method, die du für den Login benötigst:

[Only registered and activated users can see links. Click Here To Register...]

Und hier zur Get-Method, um die Seite aufzurufen:

[Only registered and activated users can see links. Click Here To Register...]

Aber mal abgesehen davon. So weit ich weiß kann folgendes doch nicht richtig funktionieren:

Code:
Dim [B][COLOR="Sienna"]quelle As String = Me.WebBrowser1.DocumentText.Contains("OFFLINE")[/COLOR][/B]
Label3.Text = quelle

        If [B][COLOR="Sienna"]quelle = False[/COLOR][/B] Then
            Label3.ForeColor = Color.Red
            Label3.Text = "OFFLINE"
            Timer1.Start()
        ElseIf [B][COLOR="Sienna"]quelle = True[/COLOR][/B] Then
            Label3.ForeColor = Color.Green
            Label3.Text = "ONLINE"
            Timer1.Start()
        End If
Mach es doch einfach so:

Code:
        If Me.WebBrowser1.DocumentText.ToLower.Contains("offline") Then
            Label3.ForeColor = Color.Red
            Label3.Text = "offline"
            Timer1.Start()
        Else
            Label3.ForeColor = Color.Green
            Label3.Text = "online"
            Timer1.Start()
        End If
Ein String kann doch nicht True oder False sein!?
06/27/2012 21:54 Kraizy​#9
Mach mal Option Strict On dann würde sowas nicht passieren..