首页 > Web开发 > 详细

golang中的http客户端

时间:2021-06-01 15:16:08      阅读:32      评论:0      收藏:0      [点我收藏+]

http WEB客户端:

	1. 获取web服务器数据:

		func Get(url string) (resp *Response, err error)

		返回:http应答包,保存成 struct 

		type Response struct {
   			Status     string // e.g. "200 OK"
   			StatusCode int    // e.g.  200
   			Proto      string // e.g. "HTTP/1.0"
  			 ??
   			Header Header
   			Body io.ReadCloser
  		 	??
		}
	2. defer resp.Body.Close()

	3. for 循环提取 Body 数据:

		n, err := resp.Body.Read(buf) 
		if n == 0 {
			fmt.Println("--Read finish!")
			break
		}
		if err != nil && err != io.EOF {
			fmt.Println("resp.Body.Read err:", err)
			return
		}
使用
func main() {
   //http://这写要写全
   resp, err := http.Get("http://baidu.com")
   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)

   //body是个io流需要读取
   buf := make([]byte, 4*1024)
   //创建个字符串来接收
   var tmp string
   for {
      n, err := resp.Body.Read(buf)
      if n == 0 {
         //读取到EOF也不要退出
         fmt.Println("read err: ", err)
         break
      }
      tmp += string(buf[:n])
   }
   fmt.Println("tmp = ", tmp)
}

输出

Status =  200 OK
StatusCode =  200
Header =  map[Accept-Ranges:[bytes] Cache-Control:[max-age=86400] Connection:[Keep-Alive] Content-Length:[81] Content-Type:[text/html] Date:[Wed, 22 May 2019 13:12:23 GMT] Etag:["51-47cf7e6ee8400"] Expires:[Thu, 23 May 2019 13:12:23 GMT] Last-Modified:[Tue, 12 Jan 2010 13:48:00 GMT] Server:[Apache]]
read err:  EOF
tmp =  <html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>

golang中的http客户端

原文:https://blog.51cto.com/u_15144024/2840148

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!