0

Web サイトが稼働しているか停止しているかをテストしようとしていますが、いくつか問題が発生しました。

最初に、サーバーのステータスをテストするかどうかは、次のような単純なコードで実行できることを知っています。

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

そのコードは機能します。しかし、問題は、入力http://google.comしてTextBox1サーバーのステータスを取得しようとすると、「Web サイトにはコンテンツがまったくないようです!」と表示されることがあります。http://google.comオンラインでコンテンツがある場合でも。グーグルだけでなく、他のサイトも同様です。

このコードに関して 2 つの質問があります。

  1. 「Web サイトにはコンテンツがないようです」と表示されるのはなぜですか。いつでも、http://google.comまたは他のサイトがオンラインでコンテンツを持っていますか?

  2. TextBox1なしで、またはTextBox1google.comなしで、または任意のサイトを入力すると、エラーが表示されます。TextBox1 に入力された URL の先頭に、または自動的に追加できる方法はありますか?http://https://invalid URI formathttp://https://

これを上記のコードに追加して、それを行うことができることはわかっています。

Dim baseAddressx As String = "http://"
Dim targetURI As New Uri(baseAddressx & TextBox1.Text) 

しかしhttp://google.com、コード自体が追加されたときに入力するhttp://と、問題が発生します。それを達成するためのより良い方法はありますか?

4

1 に答える 1

0

私がすべきことは、コンテンツの長さではなく、応答のステータス コードを読むことです。次のように読むことができます。

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

列挙型を作成して、それをよく理解することができます。そして、得た価値に基づいて、さまざまな方法でユーザーに応答します。それが役立つことを願っています。

申し訳ありませんが、私は VB の専門家ではありません。私は C# を知っています。これを VB に簡単に変換できることを願っています。ここを参照してください。

于 2014-09-02T13:22:15.527 に答える