日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

          歡迎訪問 生活随笔!

          生活随笔

          當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

          编程问答

          17 HTTP编程入门

          發布時間:2024/9/21 编程问答 28 豆豆
          生活随笔 收集整理的這篇文章主要介紹了 17 HTTP编程入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

          http請求原理

          http請求原理我就不多說了,網上一搜就能搜索到,下面我注意是記錄下http模塊的使用方法

          http 模塊

          HTTP-server hello world

          我們使用HandleFunc來把url與處理函數綁定在一塊就可以處理http請求了。

          // simehttp1 package mainimport ("fmt""net/http" )func hello(w http.ResponseWriter, r *http.Request) {fmt.Println("handle hello")fmt.Fprintf(w, "hello") }func main() {http.HandleFunc("/", hello) // 把url和處理這個url的方法綁定下err := http.ListenAndServe("0.0.0.0:80", nil) // 啟動服務if err != nil {fmt.Println("http listen failed")} }

          HTTP-Client

          我們使用http模塊來發送一個GET方法的http請求,然后在打印下獲取的結果

          // httpClient package mainimport ("fmt""io/ioutil""net/http" )func main() {res, err := http.Get("http://www.baidu.com") // 使用GET方法請求數據if err != nil {fmt.Println("get err:,", err)return}data, err := ioutil.ReadAll(res.Body) // 讀取獲取的html bodyif err != nil {fmt.Println("get data err:", err)return}fmt.Println(string(data))}

          HTTP-head

          我們可以使用head方法來訪問指定的網頁

          // httpHead package mainimport ("fmt""net/http" )var url = []string{"http://www.baidu.com","http://google.com", }func main() {for _, v := range url {resp, err := http.Head(v) // head方法獲取內容if err != nil {fmt.Printf("head %s failed,err:", v, err)continue}fmt.Printf("head succ,status:%v\n", resp.Status)} }

          顯然我們訪問谷歌的時候因為墻的原因導致訪問不了,超時時間比較長,那么我們可以自己定義下超時時間,自己定義的話只需要設置Dial 的超時時間即可,我們設置為2秒

          // httpHead package mainimport ("fmt""net""net/http""time" )var url = []string{"http://www.baidu.com","http://google.com", }func main() {for _, v := range url {c := http.Client{ // 指定http的超時時間,基本上對這個Client結構體賦值。更多詳情可以看源碼Transport: &http.Transport{Dial: func(network, addr string) (net.Conn, error) {timeout := time.Second * 2 // 這里設置超時時間為2秒return net.DialTimeout(network, addr, timeout)},},}resp, err := c.Head(v)if err != nil {fmt.Printf("head %s failed,err:", v, err)continue}fmt.Printf("head succ,status:%v\n", resp.Status)} }

          總結

          以上是生活随笔為你收集整理的17 HTTP编程入门的全部內容,希望文章能夠幫你解決所遇到的問題。

          如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。