一、介紹http包提供了http客戶端和服務(wù)端的實現(xiàn) Get,Head,Post和PostForm函數(shù)發(fā)出http、https的請求 程序在使用完回復(fù)后必須關(guān)閉回復(fù)的主體 #簡單的訪問網(wǎng)站,由于沒有添加header,訪問數(shù)據(jù)不正確 package main import ( "fmt" "io/ioutil" "net/http" ) func main() { res,err:=http.Get("https://www.baidu.com") if err !=nil{ panic(err) } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) fmt.Println(string(body)) } #建立的client客戶端,發(fā)起的get請求,在請求體中添加header,然后使用client執(zhí)行這個請求 package main import ( "fmt" "io/ioutil" "net/http" ) func main() { client:=&http.Client{} res,err:=http.NewRequest("GET","https://www.baidu.com",nil) res.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36") resp,err:=client.Do(res) if err != nil { panic(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) } 二、其他使用方法#監(jiān)聽ip端口,并建立一個sever,讓訪問者可以訪問指定的文件目錄 package main import "net/http" func main() { package main import ( "bufio" "fmt" "github.com/axgle/mahonia" "golang.org/x/net/html/charset" "golang.org/x/text/encoding" "io" "io/ioutil" "net/http" "strconv" ) func main() { client := &http.Client{} request, err := http.NewRequest("GET", "http://www.baidu.com", nil) if err != nil { fmt.Println(err) } //建立cookie對象 cookie := &http.Cookie{Name: "maple", Value: strconv.Itoa(123)} request.AddCookie(cookie) //向request中添加cookie //設(shè)置request的header request.Header.Set("Accept", "text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3") request.Header.Set("Accept-Language", "zh-CN,zh;q=0.9") request.Header.Set("Cache-Control", "no-cache") request.Header.Set("Connection", "keep-alive") response, err := client.Do(request) if err != nil { fmt.Println(err) return } e:=determineEncoding(response.Body) fmt.Println("當(dāng)前編碼:",e) defer response.Body.Close() if response.StatusCode == 200 { r, err := ioutil.ReadAll(response.Body) if err != nil { fmt.Println(err) } //編碼轉(zhuǎn)換,如編碼不正確可轉(zhuǎn)成指定編碼 srcCoder :=mahonia.NewEncoder("utf-8") res:=srcCoder.ConvertString(string(r)) fmt.Println(res) } } //編碼檢測 func determineEncoding(r io.Reader) encoding.Encoding { bytes, err := bufio.NewReader(r).Peek(1024) if err != nil { panic(err) } e, _, _ := charset.DetermineEncoding(bytes, "") return e } ? 來源:https://www./content-4-273201.html |
|