| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package main
- import (
- "bytes"
- "io/ioutil"
- "log"
- "net/http"
- gateway "github.com/rpcxio/rpcx-gateway"
- "github.com/smallnest/rpcx/codec"
- )
- type Args struct {
- A int
- B int
- }
- type Reply struct {
- C int
- }
- func main() {
- cc := &codec.MsgpackCodec{}
- args := &Args{
- A: 10,
- B: 20,
- }
- data, _ := cc.Encode(args)
- req, err := http.NewRequest("POST", "http://127.0.0.1:9981/", bytes.NewReader(data))
- if err != nil {
- log.Fatal("failed to create request: ", err)
- return
- }
- h := req.Header
- // h.Set(gateway.XMessageID, "10000")
- // h.Set(gateway.XMessageType, "0")
- h.Set(gateway.XSerializeType, "3")
- h.Set(gateway.XServicePath, "Arith")
- h.Set(gateway.XServiceMethod, "Mul")
- res, err := http.DefaultClient.Do(req)
- if err != nil {
- log.Fatal("failed to call: ", err)
- }
- defer res.Body.Close()
- // handle http response
- replyData, err := ioutil.ReadAll(res.Body)
- if err != nil {
- log.Fatal("failed to read response: ", err)
- }
- reply := &Reply{}
- err = cc.Decode(replyData, reply)
- if err != nil {
- log.Fatal("failed to decode reply: ", err)
- }
- log.Printf("%d * %d = %d", args.A, args.B, reply.C)
- }
|