request.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package wechat
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "encoding/xml"
  6. "errors"
  7. "fmt"
  8. "git.chuangxin1.com/cx/myth"
  9. )
  10. func checkJSONError(msg myth.HTTPMessage) (jq *myth.JSONQuery, err error) {
  11. fmt.Println(msg.StatusCode, string(msg.Body))
  12. if msg.StatusCode == 200 {
  13. jq, err = msg.JSONQuery()
  14. if err != nil {
  15. return
  16. }
  17. code := int(0)
  18. code, err = jq.Int(`errcode`)
  19. if code == ErrReqOk {
  20. err = nil
  21. return
  22. }
  23. if err == nil {
  24. var msg string
  25. msg, err = jq.String("errmsg")
  26. if err != nil {
  27. return
  28. }
  29. err = errors.New(msg)
  30. }
  31. } else {
  32. err = errors.New(`HTTP StatusCode not 200`)
  33. }
  34. return
  35. }
  36. // getJSON 获取 JSON 格式返回数据
  37. func getJSON(uri string) (jq *myth.JSONQuery, err error) {
  38. var msg myth.HTTPMessage
  39. headers := make(map[string]string)
  40. headers["Accept-Encoding"] = "gzip, deflate, br"
  41. headers["Accept"] = "application/json"
  42. if msg, err = myth.Get(uri, "", "", headers); err != nil {
  43. return
  44. }
  45. jq, err = checkJSONError(msg)
  46. return
  47. }
  48. // getBody 获取原始返回数据
  49. func getBody(uri string) (msg myth.HTTPMessage, err error) {
  50. headers := make(map[string]string)
  51. headers["Accept-Encoding"] = "gzip, deflate, br"
  52. msg, err = myth.Get(uri, "", "", headers)
  53. if err != nil {
  54. return
  55. }
  56. fmt.Println(msg.StatusCode, string(msg.Body))
  57. if msg.StatusCode == 200 {
  58. jq := &myth.JSONQuery{}
  59. jq, err = msg.JSONQuery()
  60. if err != nil {
  61. return
  62. }
  63. code := int(0)
  64. code, err = jq.Int(`errcode`)
  65. if code == ErrReqOk {
  66. err = nil
  67. return
  68. }
  69. if err == nil {
  70. var errmsg string
  71. errmsg, err = jq.String("errmsg")
  72. if err != nil {
  73. return
  74. }
  75. err = errors.New(errmsg)
  76. }
  77. } else {
  78. err = errors.New(`HTTP StatusCode not 200`)
  79. }
  80. return
  81. }
  82. func postJSON(url string, args interface{}) (msg myth.HTTPMessage, err error) {
  83. headers := make(map[string]string)
  84. headers["Accept-Encoding"] = "gzip, deflate, br"
  85. headers["Content-Type"] = "application/json; charset=utf-8"
  86. var data []byte
  87. data, err = json.Marshal(args)
  88. if err != nil {
  89. return
  90. }
  91. msg, err = myth.Post(url, "", "", headers, bytes.NewReader(data))
  92. return
  93. }
  94. func postXML(url string, args interface{}) (msg myth.HTTPMessage, err error) {
  95. headers := make(map[string]string)
  96. headers["Accept-Encoding"] = "gzip, deflate, br"
  97. headers["Content-Type"] = "application/xml; charset=utf-8"
  98. var data []byte
  99. data, err = xml.Marshal(args)
  100. if err != nil {
  101. return
  102. }
  103. msg, err = myth.Post(url, "", "", headers, bytes.NewReader(data))
  104. return
  105. }