【Go】原生http get和post请求框架

Go语言实现客户端client角色,向其他地址发送Get/Post请求,并获取数据(json格式)

头文件引用

import(
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

Get请求

func Http_Get(appid, appsecret string) (string, error) {

    //发送请求
    resp, err := http.Get("http://www.kuaidi100.com/query?type=yuantong&postid=11111111111")
    if err != nil || resp.StatusCode != http.StatusOK {
        fmt.Println("错误:发送请求", err)
        return nil, err
    }

    //接收到返回数据
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body) //此处可增加输入过滤
    if err != nil {
        fmt.Println("错误:读取body", err)
        return nil, err
    }

    //解析返回数据
    if bytes.Contains(body, []byte("access_token")) {
        atr := AccessTokenResponse{}
        err = json.Unmarshal(body, &atr)
        if err != nil {
            fmt.Println("错误:解析json错误", err)
            return nil, err
        }
        return &atr, nil
    } else {

        ater := AccessTokenErrorResponse{}
        err = json.Unmarshal(body, &ater)
        fmt.Printf("错误:接收到错误返回 %+v\n", ater)
        if err != nil {
            return nil, err
        }
        return nil, fmt.Errorf("%s", ater.Errmsg)
    }
}

POST请求


func Http_Post() error {
    //post的body内容,当前为json格式
    reqbody := `
        {
       "touser":"OPENID",
          "msgtype":"text",
           "text":
          {
          "content":"THECONTENT"
          }
        }
        `
    //创建请求
    postReq, err := http.NewRequest("POST",
        "http://baidu.com", //post链接
        strings.NewReader(reqbody)) //post内容

    if err != nil {
        fmt.Println("POST请求:创建请求失败", err)
        return err
    }

    //增加header
    postReq.Header.Set("Content-Type", "application/json; encoding=utf-8")

    //执行请求
    client := &http.Client{}
    resp, err := client.Do(postReq)
    if err != nil {
        fmt.Println("POST请求:创建请求失败", err)
        return err
    } else {
        //读取响应
        body, err := ioutil.ReadAll(resp.Body) //此处可增加输入过滤
        if err != nil {
            fmt.Println("POST请求:读取body失败", err)
            return err
        }

        fmt.Println("POST请求:创建成功", string(body))
    }
    defer resp.Body.Close()

    return nil
}
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值