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

}

좋은 웹페이지 즐겨찾기