| 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) | |
| } |