Golang学习笔记:http标准库

       在这章中我们主要学习的是go语言得标准库,其中在这些标准库当中,最为重要的是http库,go语言作为一门面向服务,面向网络并发的一门通用语言,它对于http的封装是非常良好的。 

       本章我们主要学习以下内容

       1.使用http客户端发送请求

               2.使用http.Client控制请求头部等

               3.使用httpputil简化工作

 

        首先我们来看一个例子:

package main

import (
	"fmt"
	"net/http"
	"net/http/httputil"
)

func main() {
	resp, err := http.Get("https://www.imooc.com")
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	s, err := httputil.DumpResponse(resp, true)
	if err != nil {
		panic(err)
	}

	fmt.Printf("%s\n",s)
}

输出结果如图所示:

Golang学习笔记:http标准库_第1张图片

 接下来我们对Get("https://www.imooc.com")做一些控制,比如说我们访问慕课网,如下图所示:

Golang学习笔记:http标准库_第2张图片

 如果我们现在想控制它的头部,让它访问手机版,如图所示:

Golang学习笔记:http标准库_第3张图片

我们可以通过NewRequest来实现 ,代码如下:

package main

import (
	"fmt"
	"net/http"
	"net/http/httputil"
)

func main() {
	request, err := http.NewRequest(
		http.MethodGet,
		"http://www.imooc.com", nil)
	request.Header.Add("User-Agent",
		"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1")

	client := http.Client{
		CheckRedirect: func(
			req *http.Request,
			via []*http.Request) error {
			fmt.Println("Redirect:", req)
			return nil
		},
	}
	resp, err := client.Do(request)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	s, err := httputil.DumpResponse(resp, true)
	if err != nil {
		panic(err)
	}

	fmt.Printf("%s\n", s)
}

可以看到输出结果如下:

Golang学习笔记:http标准库_第4张图片

 可以看到我们确实访问了手机版本的慕课网网站。

 

小结:本节我们主要学习了一下内容:

               1.使用http客户端发送请求

               2.使用http.Client控制请求头部等

               3.使用httpputil简化工作

你可能感兴趣的:(go语言学习笔记)