• 欢迎访问1024小神,一个只会Python的程序猿不是一个好司机
  • 有什么想对我说的可以在留言板里给我留言哦~
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏1024小神吧

golang-http请求设置header

Golang Jason 7个月前 (03-02) 198次浏览 1个评论

现在各种软件到处都是,写代码难免有时候需要http 调用其他的接口。
其实这个东西还挺常用,虽然很简单,但是写的时候 又忘,就像是提笔忘字,索性总结一下吧。

不需要设置header属性的http 请求

那就直接发,简单快捷不拖沓。

http GET请求

	resp, err := http.Get("http://abced.com/" + "/user/false/lsj")
	if err != nil {
		t.Log("query cluster failed", err.Error())
		t.FailNow()
	}
	defer resp.Body.Close()

	var serviceResp ServiceResp
	respByte, _ := ioutil.ReadAll(resp.Body)
	// 读出body之后,就干什么干什么了,下同。

http POST请求

    // 在别处定义
	info := model.User{
		Desc:        "test UserInfo",
		UserId:      "lsj",
		TopicName:   "test",
		ClusterName: "test",
		Type:        1,
	}

	byte, _ := json.Marshal(info)
	resp, err := http.Post("http://abced.com/" + "/user/save", "application/json", strings.NewReader(string(byte)))
	if err != nil {
		t.Log("query info failed", err.Error())
		t.FailNow()
	}
	defer resp.Body.Close()

	var serviceResp ServiceResp
	respByte, _ := ioutil.ReadAll(resp.Body)
	......

需要设置header属性的http 请求

那就new 一个 request,再设置其header 就好了

设置header 的GET请求

	req, _ := http.NewRequest("GET", "http://abced.com/" + "/user/false/lsj", nil)
	// 比如说设置个token
	req.Header.Set("token", "d8cdcf8427e")
	// 再设置个json
	req.Header.Set("Content-Type","application/json")

	
	resp, err := (&http.Client{}).Do(req)
	//resp, err := http.Get(serviceUrl + "/topic/query/false/lsj")
	if err != nil {
		t.Log("query topic failed", err.Error())
		t.FailNow()
	}
	defer resp.Body.Close()

	var serviceResp ServiceResp
	respByte, _ := ioutil.ReadAll(resp.Body)

    ......

设置header 的POST请求

    // 在别处定义
	info := model.User{
		Desc:        "test UserInfo",
		UserId:      "lsj",
		TopicName:   "test",
		ClusterName: "test",
		Type:        1,
	}
	byte, _ := json.Marshal(info)

	req, _ := http.NewRequest("POST", "http://abced.com/" + "/user/false/lsj", strings.NewReader(string(byte)))
	req.Header.Set("token", "00998ecf8427e")
	resp, err := (&http.Client{}).Do(req)
	if err != nil {
		t.Log("save topic failed", err.Error())
		t.FailNow()
	}
	defer resp.Body.Close()

	var serviceResp ServiceResp
	respByte, _ := ioutil.ReadAll(resp.Body)
	......
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func Noheader() {
	var url = "https://www.liwenzhou.com/posts/Go/go_http/"
	resp, err := http.Get(url)
	if err != nil {
		fmt.Println("get请求发送失败")
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("读取请求体失败")
	}
	fmt.Printf("获取到的结果类型是:%T", body)
	fmt.Println(string(body))
}

func AddHeader() {
	fmt.Println("包含请求头的请求")
	// 先new一个请求对象
	request, _ := http.NewRequest("GET", "https://www.cnblogs.com/mingbai/p/goHttpReq.html", nil)
	request.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36")
	request.Header.Add("referer", "https://www.cnblogs.com/")
	httpClient := &http.Client{} // 创建一个httpclient对象
	res, _ := httpClient.Do(request)  // 使用这个client对象发送请求
	// 或者简写格式:
	res, _ = (&http.Client{}).Do(request)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)
	fmt.Println(string(body))
}


func main() {
	fmt.Println("发送get请求")
	// 没有请求头的请求
	//Noheader()

	//
	AddHeader()
}


如有失效,请留言告知丨转载请注明原文链接:golang-http请求设置header
点赞 (0)

您必须 登录 才能发表评论!

(1)个小伙伴在吐槽
  1. qq018
    你也懂
    2021-04-19 14:18