golang 发送post请求 其body中json对象使用变量作为value

九月朦胧 · · 1768 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

话不多说直接上代码

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列表中找到真实ip
func 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)

}

有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:九月朦胧

查看原文:golang 发送post请求 其body中json对象使用变量作为value

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1768 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传