使用Golang从URL获取内容并转换为字符串

使用Golang从URL获取内容并转换为字符串 你好,我正在开发一个基于cPanel的软件(好吧,这不是重点)。实际上,我想从一个URL获取内容,并希望将该内容转换为字符串,因为我尝试了常规方法,它返回的是uint8字节码。 这是URL:http://myip.cpanel.net/v1.0/ 这个URL显示我们的IPv4地址,我想在一个变量中读取该IPv4地址,并希望将该IP转换为字符串,以便我能轻松使用它。

实际上,正如我所说,我正在开发一个需要许可证的软件,许可证是基于IP的,所以我想将其转换为字符串,以便我能轻松使用该IP,例如显示“您的IPv4地址:”:

fmt.Printf(ip)
if ip == "x.x.x.x" {
    fmt.Println("yap")
} else {
    fmt.Println("you're not allowed")
}

希望你能理解,所以请告诉我一种方法,如何从该URL读取内容并将该内容转换为字符串。


更多关于使用Golang从URL获取内容并转换为字符串的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

使用 net.IP 类型,这是 IP 地址的规范形式。

package main

import (
	"bytes"
	"errors"
	"fmt"
	"io/ioutil"
	"net"
	"net/http"
)

func getMyIP() (net.IP, error) {
	resp, err := http.Get("http://myip.cpanel.net/v1.0/")
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	ip := net.ParseIP(string(bytes.TrimSpace(body)))
	if ip == nil {
		err := errors.New("invalid IP address")
		return nil, err
	}
	return ip, nil
}

func main() {
	myip, err := getMyIP()
	fmt.Println(myip, err)
	if err != nil {
		return
	}

	fmt.Printf("Your IP Address: %s\n", myip)

	allowed := net.ParseIP("77.111.246.40")
	if len(myip) > 0 && myip.Equal(allowed) {
		fmt.Println("yep")
	} else {
		fmt.Println("you’re not allowed")
	}
}

.

77.111.246.40 <nil>
Your IP Address: 77.111.246.40
yep

更多关于使用Golang从URL获取内容并转换为字符串的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你可以使用net/http包从URL获取内容,然后使用string()将字节转换为字符串。以下是示例代码:

package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    // 目标URL
    url := "http://myip.cpanel.net/v1.0/"
    
    // 发送GET请求
    resp, err := http.Get(url)
    if err != nil {
        fmt.Printf("请求失败: %v\n", err)
        return
    }
    defer resp.Body.Close()
    
    // 读取响应体
    body, err := io.ReadAll(resp.Body)
    if err != nil {
        fmt.Printf("读取响应失败: %v\n", err)
        return
    }
    
    // 将字节转换为字符串
    ip := string(body)
    
    // 去除可能的换行符或空格
    ip = strings.TrimSpace(ip)
    
    fmt.Printf("您的IPv4地址: %s\n", ip)
    
    // 许可证验证示例
    if ip == "192.168.1.1" {
        fmt.Println("yap")
    } else {
        fmt.Println("you're not allowed")
    }
}

如果你需要更简洁的版本,可以使用http.Get配合ioutil.ReadAll(Go 1.16+使用io.ReadAll):

package main

import (
    "fmt"
    "io"
    "net/http"
    "strings"
)

func main() {
    resp, err := http.Get("http://myip.cpanel.net/v1.0/")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    
    body, _ := io.ReadAll(resp.Body)
    ip := strings.TrimSpace(string(body))
    
    fmt.Printf("IP地址: %s\n", ip)
}

注意:

  1. http.Get()返回的是字节切片([]byte),使用string()即可转换为字符串
  2. strings.TrimSpace()用于去除响应中可能包含的换行符或空格
  3. 记得处理错误和关闭响应体
  4. 实际使用时应该添加更完善的错误处理

这样你就能获得纯文本的IP地址字符串,可以直接用于比较和显示。

回到顶部