base.go 982 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package base
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "net/http"
  6. "strings"
  7. "github.com/yaotian/gowechat/server/context"
  8. "github.com/yaotian/gowechat/util"
  9. )
  10. //MpBase 微信公众号
  11. type MpBase struct {
  12. *context.Context
  13. }
  14. //HTTPGetWithAccessToken http get
  15. func (c *MpBase) HTTPGetWithAccessToken(url string) (resp []byte, err error) {
  16. retry := 1
  17. Do:
  18. var accessToken string
  19. accessToken, err = c.GetAccessToken()
  20. if err != nil {
  21. return
  22. }
  23. var target = ""
  24. if strings.Contains(url, "?") {
  25. target = fmt.Sprintf("%s&access_token=%s", url, accessToken)
  26. } else {
  27. target = fmt.Sprintf("%s?access_token=%s", url, accessToken)
  28. }
  29. var reponse *http.Response
  30. reponse, err = http.Get(target)
  31. if err != nil {
  32. return
  33. }
  34. defer reponse.Body.Close()
  35. resp, err = ioutil.ReadAll(reponse.Body)
  36. err = util.CheckCommonError(resp)
  37. if err == util.ErrUnmarshall {
  38. return
  39. }
  40. if err != nil {
  41. if retry > 0 {
  42. retry--
  43. c.CleanAccessTokenCache()
  44. goto Do
  45. }
  46. return
  47. }
  48. return
  49. }