Go 언어 학습 노트 22. http 프로 그래 밍
9159 단어 Go
package main
import (
"fmt"
"net/http"
)
//w,
//r,
func HandConn(w http.ResponseWriter, r *http.Request) {
fmt.Println("r.Method = ", r.Method) // GET
fmt.Println("r.URL = ", r.URL)// /
fmt.Println("r.Header = ", r.Header)// map[Accept-Encoding:[gzip] User-Agent:[Go-http-client/1.1]]
fmt.Println("r.Body = ", r.Body)// {}
w.Write([]byte("hello go")) //
}
func main() {
// , ,
http.HandleFunc("/", HandConn)
//
http.ListenAndServe(":8000", nil)
}
클 라 이언 트:
package main
import (
"fmt"
"net/http"
)
func main() {
//resp, err := http.Get("http://www.baidu.com")
resp, err := http.Get("http://127.0.0.1:8000")
if err != nil {
fmt.Println("http.Get err = ", err)
return
}
defer resp.Body.Close()
fmt.Println("Status = ", resp.Status) // 200 OK
fmt.Println("StatusCode = ", resp.StatusCode) // 200
fmt.Println("Header = ", resp.Header) // map[Content-Length:[8] Content-Type:[text/plain; charset=utf-8] Date:[Tue, 08 Oct 2019 07:38:41 GMT]]
fmt.Println("Body = ", resp.Body)// &{0xc0000da000 {0 0} false 0x610250 0x6101d0}
buf := make([]byte, 4*1024)
var tmp string
for {
n, err := resp.Body.Read(buf)
if n == 0 {
fmt.Println("read err = ", err) //read err = EOF
break
}
tmp += string(buf[:n])
}
fmt.Println("tmp = ", tmp) //tmp = hello go
}