【发布时间】:2014-09-02 13:03:29
【问题描述】:
我正在尝试测试一个网站是启动还是关闭,但遇到了一些问题。
首先我知道如果我要测试服务器的状态,可以使用如下简单的代码来测试:
If My.Computer.Network.Ping(TextBox1.Text) Then
TextBox2.Text = "Online"
Else
TextBox2.Text = "Offline"
End If
但我拒绝这样做,因为 Ping 并不总是确定外部 Web 服务器是否启动的可靠方法。
所以我尝试使用以下代码来解决这个问题:
Try
Dim fr As System.Net.HttpWebRequest
Dim targetURI As New Uri(TextBox1.Text)
fr = DirectCast(System.Net.HttpWebRequest.Create(targetURI), System.Net.HttpWebRequest)
If (fr.GetResponse().ContentLength > 0) Then
TextBox2.Text = "Website appears to exist!"
Else
TextBox2.Text = "Website appears to have no content at all!"
End If
Catch ex As System.Net.WebException
TextBox2.Text = "Cannot connect - website not responding!"
End Try
该代码有效。但问题是如果我在TextBox1 中输入http://google.com 并尝试获取服务器状态,那么有时它会显示为“网站似乎根本没有内容!” 即使http://google.com在线并且有内容。不仅适用于谷歌,也适用于其他网站。
关于这段代码我有两个问题。
-
为什么它告诉我“网站似乎根本没有内容!”即使
http://google.com或任何其他网站在线并且有内容? 假设我在 TextBox1 中只输入
google.com或任何没有http://或https://的站点,它会给我一个错误提示invalid URI format。无论如何我可以自动将http://或https://添加到TextBox1中输入的网址的开头吗?
我知道我可以将它添加到上面的代码中来做到这一点:
Dim baseAddressx As String = "http://"
Dim targetURI As New Uri(baseAddressx & TextBox1.Text)
但是如果我在它自己添加http:// 的代码时键入http://google.com 会产生问题。有更好的方法来实现吗?
【问题讨论】:
标签: vb.net httpwebrequest getresponse