go語言之進階篇http客戶端編程


1、http客戶端編程

示例:

http_server.go

package main

import (
	"fmt"
	"net/http"
)

//w, 給客戶端回復數據
//r, 讀取客戶端發送的數據
func HandConn(w http.ResponseWriter, r *http.Request) {
	fmt.Println("r.Method = ", r.Method)
	fmt.Println("r.URL = ", r.URL)
	fmt.Println("r.Header = ", r.Header)
	fmt.Println("r.Body = ", r.Body)

	w.Write([]byte("hello go")) //給客戶端回復數據
}

func main() {
	//注冊處理函數,用戶連接,自動調用指定的處理函數
	http.HandleFunc("/", HandConn)

	//監聽綁定
	http.ListenAndServe(":8000", nil)
}

 

http_client.go

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)
	fmt.Println("StatusCode = ", resp.StatusCode)
	fmt.Println("Header = ", resp.Header)
	//fmt.Println("Body = ", resp.Body)

	buf := make([]byte, 4*1024)
	var tmp string

	for {
		n, err := resp.Body.Read(buf)
		if n == 0 {
			fmt.Println("read err = ", err)
			break
		}
		tmp += string(buf[:n])
	}

	//讀取網頁內容,打印出來
	fmt.Println("tmp = ", tmp)
}

執行結果:

先運行服務端:

D:\GoFiles\src\hello_01>go run http_server.go
r.Method =  GET
r.URL =  /
r.Header =  map[User-Agent:[Go-http-client/1.1] Accept-Encoding:[gzip]]
r.Body =  {}

再運行客戶端:

D:\GoFiles\src\hello_01>go run http_client.go
Status =  200 OK
StatusCode =  200
Header =  map[Date:[Sat, 26 Jan 2019 07:04:09 GMT] Content-Length:[8] Content-Ty
pe:[text/plain; charset=utf-8]]
read err =  EOF
tmp =  hello go

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM