package main import ( "encoding/json" "fmt" "io/ioutil" "log" "net" "net/http" "os" "time" "../cmd/httpclient" "github.com/Unknwon/goconfig" "github.com/fatih/structs" ) func init() { // } func getLocalIP() string { addrs, err := net.InterfaceAddrs() if err != nil { fmt.Println(err) os.Exit(1) } for _, address := range addrs { // 检查ip地址判断是否回环地址 if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { if ipnet.IP.To4() != nil { //fmt.Println(ipnet.IP.String()) return ipnet.IP.String() } } } return "" } func checkURL(list *httpclient.List) *httpclient.Status { var s httpclient.Status s.Area = list.Area s.Id = list.Id s.Ip = getLocalIP() t1 := time.Now() _, err := http.Get(list.Url) if err != nil { s.Status = false fmt.Println(list.Url, err) } else { s.Status = true } //defer resp.Body.Close() elapsed := time.Since(t1) elapsedNan := elapsed.String() s.Cost = elapsedNan //s.Cost = strconv.FormatInt(int64(elapsedNan),10) return &s } func main() { var cfg *goconfig.ConfigFile cpath, _ := os.Getwd() config, err := goconfig.LoadConfigFile(cpath + "/config/client.ini") //加载配置文件 if err != nil { log.Println("get config file error") os.Exit(-1) } cfg = config client, _ := cfg.GetSection("client") u, _ := client["get_list_url"] a, _ := client["area"] //get list via get resp, err := http.Get(u + a) if err != nil { fmt.Println(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err) } var dat []httpclient.List err = json.Unmarshal(body, &dat) var vv []*httpclient.Status if err != nil { fmt.Println("error", err) } else { for _, v := range dat { ss := checkURL(&v) vv = append(vv, ss) } } if vv != nil { fmt.Printf("%+v", vv) //postUrl := client["post_list_url"] data := structs.Map(vv) fmt.Println(data) //bb := url.Values{data} // //body := strings.NewReader(bb.Encode()) //clt := http.Client{} //resp, err := clt.Post(postUrl, "application/x-www-form-urlencoded", body) //if err != nil { // fmt.Println(err) //} else { // fmt.Println(resp) //} //b, err := json.Marshal(vv) //if err != nil { //log.Println("json format error:", err) //return //} // // body := bytes.NewBuffer(b) // resp, err := http.Post(postUrl, contentType, body) // if err != nil { // log.Println("Post failed:", err) // return //} // // defer resp.Body.Close() // // content, err := ioutil.ReadAll(resp.Body) // if err != nil { // log.Println("Read failed:", err) // return //} // // log.Println("content:", string(content)) //} } }