最近都在忙第三方广告对接的事情, 在此记录一下, 有些第三方的API
文档扔了一个word
文档,文档上几十上百个参数, 只有一个表格参数说明, 然后自己根据表格手写参数(真的折磨)
但是有几家就比较好, 会提供proto
文件, 然后可以使用这个文件生成Request
和Response
(点赞)
proto
文件, 然后拿来自己生成代码 protoc pb\xxx.proto --go_out=.
package main
import (
"bytes"
"io/ioutil"
"log"
"net/http"
"github.com/golang/protobuf/proto"
"xxxx/internal/pb"
)
func main() {
getDataByAdServe()
}
func getDataByAdServe() {
// 序列化请求数据
r := &pb.AdProfRequest{}
data, er := proto.Marshal(r)
if er != nil {
log.Fatal(er)
return
}
// 发送 HTTP 请求, 注意实际使用设置请求超时时间
reader := bytes.NewReader(data)
resp, err := http.Post("http://127.0.0.1:8001/xxx", "application/x-protobuf", reader)
if err != nil {
log.Println(err)
return
}
defer resp.Body.Close()
//
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
return
}
// 反序列化响应
var res pb.AdProfResponse
if err := proto.Unmarshal(body, &res); err != nil {
log.Println(err)
return
}
log.Println(&res)
}