golang get, post请求

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

get请求带参数,请求头

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "strconv"
    "time"
)

type ResultData struct{
    Reason string `json:"reason"`
    Result DataList `json:"result"`
    Error_code int `json:"error_code"`
}

type DataList struct{
    Data []DataInfo `json:"data"`
}

type DataInfo struct{
    Content string `json:"content"`
    HashId string `json:"hashId"`
    Unixtime int `json:"unixtime"`
    Updatetime string `json:"updatetime"`
}

func main() {
    key := "#####################"
    tunix := strconv.Itoa(int(time.Now().Unix()))

    request, err := http.NewRequest("GET", "http://v.juhe.cn/joke/content/list.php", nil)
    if err != nil{
        log.Println("err->", err)
    }

    // 添加请求头
    request.Header.Add("content-type", "application/x-www-form-urlencoded")
    request.Header.Add("cache-control", "no-cache")

    //加入get参数
    q := request.URL.Query()
    q.Add("sort", "desc")
    q.Add("time", tunix)
    q.Add("key", key)
    fmt.Println("q->", q)
    request.URL.RawQuery = q.Encode()
    fmt.Println("encode->", q.Encode())

    resp, err := http.DefaultClient.Do(request)
    if err != nil{
        log.Println("err->", err)
    }
    defer resp.Body.Close()

    data, err := ioutil.ReadAll(resp.Body)
    if err != nil{
        log.Println("err->", err)
    }

    rdata := string(data)
    fmt.Println(rdata)

    var resultdata ResultData
    json.Unmarshal([]byte(rdata), &resultdata)
    fmt.Printf("%s\n", resultdata)
}


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

本文来自:简书

感谢作者:aside section._1OhGeD

查看原文:golang get, post请求

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

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