阅读 70

golang中的http客户端

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 =  

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

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐