golang-http 请求---设置header与直接发

名白 · · 5918 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

背景

现在各种软件到处都是,写代码难免有时候需要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)
    ......

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:名白

查看原文:golang-http 请求---设置header与直接发

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5918 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传