【二、http】go的http基本请求设置(设置查询参数、定制请求头)get和post类似

一、设置url后边的参数,(get和post请求为例子)

cpp 复制代码
func requstByParamsGet(){
	requst, err := http.NewRequest(http.MethodGet, "http://httpbin.org/get", nil)
	if err != nil {
		fmt.Println("ss")
	}

	params := make(url.Values)
	params.Add("name", "kaiyue")
	params.Add("age", "18")

	//encode之后会生成如下,name=kaiyue&age=18
	requst.URL.RawQuery = params.Encode()
	r, err := http.DefaultClient.Do(requst)
	if err != nil {
		fmt.Println("ss")
	}
	defer r.Body.Close()
	printBody(r)
}

func requstByParamsPost(){
	requst, err := http.NewRequest(http.MethodPost, "http://httpbin.org/post", nil)
	if err != nil {
		fmt.Println("ss")
	}

	params := make(url.Values)
	params.Add("name", "kaiyue")
	params.Add("age", "18")

	//encode之后会生成如下,name=kaiyue&age=18, 是组成url问号后边的参数
	requst.URL.RawQuery = params.Encode()
	r, err := http.DefaultClient.Do(requst)
	if err != nil {
		fmt.Println("ss")
	}
	defer r.Body.Close()
	printBody(r)
}
func main() {
	requstByParamsPost()
}

结果:

cpp 复制代码
{
  "args": {
    "age": "18", 
    "name": "kaiyue"
  }, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept-Encoding": "gzip", 
    "Content-Length": "0", 
    "Host": "httpbin.org", 
    "User-Agent": "Go-http-client/1.1", 
    "X-Amzn-Trace-Id": "Root=1-6544e26c-2a47c0392e3351a71259c068"
  }, 
  "json": null, 
  "origin": "120.244.60.192", 
  "url": "http://httpbin.org/post?age=18&name=kaiyue"
}

二、定制http头中的参数

cpp 复制代码
func requstByHeader(){
	requst, err := http.NewRequest(http.MethodGet, "http://httpbin.org/get", nil)
	if err != nil {
		fmt.Println("ss")
	}

	requst.Header.Add("user-agent", "chrome")
	r, err := http.DefaultClient.Do(requst)
	if err != nil {
		fmt.Println("ss")
	}
	defer r.Body.Close()
	printBody(r)
}

func main() {
	requstByHeader()
}

结果:

cpp 复制代码
{
  "args": {}, 
  "headers": {
    "Accept-Encoding": "gzip", 
    "Host": "httpbin.org", 
    "User-Agent": "chrome", 
    "X-Amzn-Trace-Id": "Root=1-6544e394-14143f26584a7eed32728fd7"
  }, 
  "origin": "120.244.60.192", 
  "url": "http://httpbin.org/get"
}

可以看到其中头部信息已经打印出自己增加的部分内容

相关推荐
SilentSamsara7 小时前
TLS/HTTPS 实战:证书链、握手与生产配置
网络·数据库·网络协议·http·https
Tomhex7 小时前
Go调用C代码的场景与实践
golang
黑牛儿9 小时前
Swoole协程 vs Go协程:PHP开发者一看就懂的实战对比
后端·golang·php·swoole
Wenweno0o17 小时前
Eino-Document 组件使用指南
golang·大模型·智能体·eino
平淡风云18 小时前
IOS开发:如何获取苹果手机的uuid
ios·iphone·uuid
学代码的真由酱18 小时前
HTTPS
网络协议·http·https
W.A委员会21 小时前
常见网络攻击
网络·http·网络安全
lolo大魔王1 天前
Go语言的反射机制
开发语言·后端·算法·golang
XMYX-01 天前
16 - Go 协程(goroutine):从基础到实战
开发语言·golang
lolo大魔王1 天前
Go语言的文件处理操作
golang