您好,登錄后才能下訂單哦!
// code_054_http_service_02 project main.go
package main
import (
"fmt"
"net/http"
)
//服務端編寫的業務邏輯處理程序
//hander函數: 具有func(w http.ResponseWriter, r *http.Requests)簽名的函數
func myHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println(r.RemoteAddr, "連接成功") //r.RemoteAddr遠程網絡地址
fmt.Println("method = ", r.Method) //請求方法
fmt.Println("url = ", r.URL.Path)
fmt.Println("header = ", r.Header)
fmt.Println("body = ", r.Body)
w.Write([]byte("hello go")) //給客戶端恢復的數據
}
func main() {
http.HandleFunc("/go", myHandler)
//該方法用于在指定的 TCP 網絡地址 addr 進行監聽,然后調用服務端處理程序來處理傳入的連接請求。
//該方法有兩個參數:第一個參數 addr 即監聽地址;第二個參數表示服務端處理程序,通常為空
//第二個參數為空意味著服務端調用 http.DefaultServeMux 進行處理
http.ListenAndServe("127.0.0.1:8006", nil)
}
// code_054_http_client_02 project main.go
package main
import (
"fmt"
"io"
"log"
"net/http"
)
func main() {
//get方式請求一個資源
//resp, err := http.Get("http://www.baidu.com")
//resp, err := http.Get("http://www.neihan8.com/article/index.html")
resp, err := http.Get("http://127.0.0.1:8000/go")
if err != nil {
log.Println(err)
return
}
defer resp.Body.Close() //關閉
fmt.Println("header = ", resp.Header)
fmt.Printf("resp status %s\nstatusCode %d\n", resp.Status, resp.StatusCode)
fmt.Printf("body type = %T\n", resp.Body)
buf := make([]byte, 2048) //切片緩沖區
var tmp string
for {
n, err := resp.Body.Read(buf) //讀取body包內容
if err != nil && err != io.EOF {
fmt.Println(err)
return
}
if n == 0 {
fmt.Println("讀取內容結束")
break
}
tmp += string(buf[:n]) //累加讀取的內容
}
fmt.Println("buf = ", string(tmp))
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。