📜  Golang 程序检查 URL/网站的状态

📅  最后修改于: 2022-05-13 01:55:13.159000             🧑  作者: Mango

Golang 程序检查 URL/网站的状态

在这里,我们将使用 Golang 检查 URL 的状态。首先,我们将在 Golang 中导入简单的fmt包,然后使用 scan函数将输入存储在字符串类型的变量中。

Go
// Go program to enter URL
package main
  
import (
    "fmt"
)
func main() {
    var url string
    fmt.Print("Enter the URL of a website: ")
    fmt.Scan(&url)
}


Go
// Go program to enter URL
package main
  
import (
    "fmt"
    "net/http"
)
func main() {
    var url string
    fmt.Print("Enter the URL of a website: ")
    fmt.Scan(&url)
    resp,err := http.Get(url)
    fmt.Print(resp)
    fmt.Print(err)
}


Go
// Go program to enter URL
package main
  
import (
    "fmt"
    "net/http"
    "log"
)
func main() {
    var url string
    fmt.Print("Enter the URL of a website: ")
    fmt.Scan(&url)
    resp,err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Print(resp)
}


Go
// Go program checking the response status code
package main
  
import (
    "fmt"
    "net/http"
    "log"
)
  
func main() {
    var url string
    fmt.Print("Enter the URL of a website: ")
    fmt.Scan(&url)
    resp,err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    status_code := resp.StatusCode
    fmt.Println(status_code,":",url)
}


创建一个文件,它可以是您喜欢的任何名称,但它应该具有 .go 扩展名。您可以通过执行以下命令来运行脚本:

在这个脚本中,我们声明了一个字符串类型的变量 URL。我们只是为使用 Scan函数获取并存储在 URL 变量中的输入显示信息性消息。

在 HTTP 中使用 Get函数

现在我们在变量中有一个 URL,我们可以在 Golang 中设置 HTTP 模块来制作函数来获取网站数据或只是元数据。我们需要将“net/http”模块导入我们的程序。

导入 HTTP 模块后,我们可以访问库中提供的 Get函数,因此使用 Get 方法我们可以通过向提供的 URL 发送 GET 请求来简单地获取响应。 Get函数将参数作为网站的 URL,如果有任何其他返回错误,则返回响应,如果 URL 不存在或无效,则可能是这种情况。

// Go program to enter URL
package main
  
import (
    "fmt"
    "net/http"
)
func main() {
    var url string
    fmt.Print("Enter the URL of a website: ")
    fmt.Scan(&url)
    resp,err := http.Get(url)
    fmt.Print(resp)
    fmt.Print(err)
}

通过添加 if-else 条件来检查程序的错误和退出状态,可以进一步改进程序。因此,我们可以使用 Golang 中的 log 模块记录 Get函数调用中的错误。

// Go program to enter URL
package main
  
import (
    "fmt"
    "net/http"
    "log"
)
func main() {
    var url string
    fmt.Print("Enter the URL of a website: ")
    fmt.Scan(&url)
    resp,err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Print(resp)
}

输出:

正如我们所见,我们有一个来自给定 URL 的响应头。我们现在将看到如何从收到的响应对象中获取状态码。

检查响应状态代码

最后,我们需要检查在向提供的 URL 发送 GET 请求后收到的响应的状态码。我们将简单地打印 URL 的状态代码,用户可以进一步解释或根据重定向、成功、内部错误或未找到等要求进行修改。

// Go program checking the response status code
package main
  
import (
    "fmt"
    "net/http"
    "log"
)
  
func main() {
    var url string
    fmt.Print("Enter the URL of a website: ")
    fmt.Scan(&url)
    resp,err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    status_code := resp.StatusCode
    fmt.Println(status_code,":",url)
}

在上面的脚本中,我们可以通过使用带有名称状态代码的点前缀来访问响应中的状态代码,并将其简单地存储在 status_code 变量中。

脚本演示