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 =  <html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盼盼编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值