1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| # hello_work/http/client package main
import ( "bytes" "encoding/json" "fmt" "io" "net/http" "strings" )
type Cmd struct { ReqType int username string pwd string }
func start(s string) { if strings.ToUpper(s) == "POST" { contentType := "application/json;charset=utf-8" url := "http://127.0.0.1:8000/bar"
cmd := Cmd{ReqType: 1, Username: "test1", Pwd: "123456"} b, err := json.Marshal(cmd) if err != nil { fmt.Println("json格式错误,error:", err) return } body := bytes.NewBuffer(b) resp, err := http.Post(url, contentType, body) if err != nil { fmt.Println("http request is fail,error:", err) } defer resp.Body.Close()
formData := make(map[string]interface{}) json.NewDecoder(resp.Body).Decode(&formData)
fmt.Println("读取服务器数据成功", formData)
for key, value := range formData { fmt.Printf("%s: %v\n", key, value) if key == "Data" { if _, ok := value.([]interface{}); ok { for _, v := range value.([]interface{}) { for j, s := range v.(map[string]interface{}) { fmt.Printf("%s: %v\n", j, s)
}
} }
}
}
} else {
resp, err := http.Get("http://127.0.0.1:8000/go") if err != nil { fmt.Println("连接服务器失败,error", err) return } defer resp.Body.Close() fmt.Println("code:", resp.StatusCode) buf := make([]byte, 1024) for { n, err := resp.Body.Read(buf) if err != nil && err != io.EOF { fmt.Println("读取服务器数据失败,error:", err) return } fmt.Println("读取服务器数据成功") res := string(buf[:n]) fmt.Println(res) break } } }
func main() {
start("post")
}
|