package main import ( "bytes" "fmt" "io/ioutil" "net/http" "echo/hero" "echo/net" flatbuffers "github.com/google/flatbuffers/go" ) func RequestBody() *bytes.Reader { b := flatbuffers.NewBuilder(0) r := net.RequestT{Player: &hero.WarriorT{Name: "Krull", Hp: 100}} b.Finish(r.Pack(b)) return bytes.NewReader(b.FinishedBytes()) } func ReadResponse(r *http.Response) { body, err := ioutil.ReadAll(r.Body) if err != nil { fmt.Printf("Unable to read request body: %v\n", err) return } res := net.GetRootAsResponse(body, 0) player := res.Player(nil) fmt.Printf("Got response (name: %v, hp: %v)\n", string(player.Name()), player.Hp()) } func main() { body := RequestBody() req, err := http.NewRequest("POST", "http://localhost:8080/echo", body) if err != nil { fmt.Println(err) return } client := http.DefaultClient resp, err := client.Do(req) if err != nil { fmt.Println(err) return } ReadResponse(resp) }