golang中http编程
1. http server
package main import ( "fmt" "net/http" ) func main() { // 请求url和对应处理函数 http.HandleFunc("/hello", myHandleFunc) // 开启服务 http.ListenAndServe("127.0.0.1:8080", nil) } func myHandleFunc(w http.ResponseWriter, r *http.Request) { fmt.Println(r.RemoteAddr, "链接成功") fmt.Println(r.Method, r.URL.Path) fmt.Println(r.Header) fmt.Println(r.Body) // 回复 var buf = []byte("hello 马亚南, 这是服务器发送给你的消息") w.Write(buf) }
2. http client
package main import ( "fmt" "io" "net/http" ) func main() { // http客户端 resp, _ := http.Get("http://127.0.0.1:8080/hello") defer resp.Body.Close() fmt.Println(resp.Status) fmt.Println(resp.Header) buf := make([]byte, 1024) for { // 接收服务端消息 n, err := resp.Body.Read(buf) if err != nil && err != io.EOF { fmt.Println(err) return } else { fmt.Println("读取完毕") ret := string(buf[:n]) fmt.Println(ret) break } } }