🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 简介 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> ~~~