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


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

    
    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()
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    结果:

    {
      "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"
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    二、定制http头中的参数

    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()
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    结果:

    {
      "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"
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

  • 相关阅读:
    kotlin中使用Room数据库(包含升降级崩溃处理)
    浅谈 Raft 分布式一致性协议|图解 Raft
    任正非说:段到段而不是端到端的变革,一定会局部优秀了,而全局灾难了。
    torch-scatter安装失败解决办法
    大数据——Spark SQL
    hbase常用命令
    【回归预测】MATLAB 实现基于BP神经网络的多变量回归预测
    IDEA 2022 创建 Maven Web 项目教程
    串口数据解析
    scikit-learn.datasets 机器学习数据集
  • 原文地址:https://blog.csdn.net/qq_39852676/article/details/134210147