17 HTTP编程入门
生活随笔
收集整理的這篇文章主要介紹了
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编程入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2014末,Surface Pro 3叫
- 下一篇: 预测未来 盘点大数据分析领域五大趋势