【问题标题】:response using httpwebrequest and uri problems使用 httpwebrequest 和 uri 问题的响应
【发布时间】: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在线并且有内容。不仅适用于谷歌,也适用于其他网站。

关于这段代码我有两个问题。

  1. 为什么它告诉我“网站似乎根本没有内容!”即使http://google.com 或任何其他网站在线并且有内容?

  2. 假设我在 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


    【解决方案1】:

    我认为你应该做的是你应该阅读响应的状态代码,而不是内容长度。可以这样解读:

    HttpWebResponse res = (HttpWebResponse)fr.GetResponse(); int statusCode = (int)response.StatusCode if(statusCode == 200) //Website is up else.

    您可以创建枚举以更好地理解它。并根据您获得的价值以各种方式回应用户。 希望对您有所帮助。

    对不起,我不是 VB 专家。我知道 C#,我希望你能轻松地将它转换为 VB。见here

    【讨论】:

    • 谢谢!那确实奏效了。 :) 顺便说一句,我的第二个问题有什么答案吗?
    • 至于第二部分,这将让你完成工作:string targetURIString = targetURI.toString();if(targetURIString.Contains("http://")){//then use the same URI.}}else{targetURIString += "http://" + targetURI;//Use the second string.}
    • 你也可以用同样的方法额外检查“www”。
    • 谢谢,效果也不错。再次感谢您,我相信它会在很多情况下派上用场。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多