golang 发送post请求 其body中json对象使用变量作为value
16lz
2021-01-22
话不多说直接上代码
package main//导入需要的包import ( "errors" "fmt" "io/ioutil" "net" "net/http" "os" "strings")//获取本地机器ip列表func externalIP() (net.IP, error) { ifaces, err := net.Interfaces() if err != nil { return nil, err } for _, iface := range ifaces { if iface.Flags&net.FlagUp == 0 { continue // interface down } if iface.Flags&net.FlagLoopback != 0 { continue // loopback interface } addrs, err := iface.Addrs() if err != nil { return nil, err } for _, addr := range addrs { ip := getIpFromAddr(addr) if ip == nil { continue } return ip, nil } } return nil, errors.New("connected to the network?")}//从本地机器ip列表中找到真实ipfunc getIpFromAddr(addr net.Addr) net.IP { var ip net.IP switch v := addr.(type) { case *net.IPNet: ip = v.IP case *net.IPAddr: ip = v.IP } if ip == nil || ip.IsLoopback() { return nil } ip = ip.To4() if ip == nil { return nil // not an ipv4 address } return ip}//获取本机名称func getHostname() string{ name, err := os.Hostname() if err != nil { panic(err) } return name //fmt.Println("hostname:", name)}//发送一个post请求,传递含有变量的json数据func httpPostJson(getip string , gethostname string) { url := "https://myurl" method := "POST" payload := strings.NewReader("{\"hostName\": \""+gethostname+"\",\"ip\": \""+getip+"\"}") client := &http.Client { } req, err := http.NewRequest(method, url, payload) if err != nil { fmt.Println(err) } req.Header.Add("Content-Type", "application/json") res, err := client.Do(req) defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) fmt.Println(string(body))}func main() { ip, err := externalIP() if err != nil { fmt.Println(err) } fmt.Println("本机ip:",ip.String()) //把ip和hostnmae赋值给新的变量 getip := ip.String() gethostname := getHostname() httpPostJson(getip , gethostname)}
更多相关文章
- Java 多线程:volatile 变量、happens-before 关系及内存一致性
- 2: Zabbix5.0使用钉钉机器人报警
- Java 类的静态变量存放在哪块内存中?
- 面试官:为什么静态方法不能调用非静态方法和变量?
- mysql中你应该要知道的变量知识点
- python注释、变量、常量的学习
- No.6 关于变量名前加$以及不加$的区别
- Java中static变量作用和用法详解