http_util.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package util
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "log"
  7. "net/http"
  8. )
  9. // GetHTTPResponse 处理HTTP结果,返回序列化的json
  10. func GetHTTPResponse(resp *http.Response, url string, err error, result interface{}) error {
  11. body, err := GetHTTPResponseOrg(resp, url, err)
  12. if err == nil {
  13. // log.Println(string(body))
  14. err = json.Unmarshal(body, &result)
  15. if err != nil {
  16. log.Printf("请求接口%s解析json结果失败! ERROR: %s\n", url, err)
  17. }
  18. }
  19. return err
  20. }
  21. // GetHTTPResponseOrg 处理HTTP结果,返回byte
  22. func GetHTTPResponseOrg(resp *http.Response, url string, err error) ([]byte, error) {
  23. if err != nil {
  24. log.Printf("请求接口%s失败! ERROR: %s\n", url, err)
  25. return nil, err
  26. }
  27. defer resp.Body.Close()
  28. body, err := ioutil.ReadAll(resp.Body)
  29. if err != nil {
  30. log.Printf("请求接口%s失败! ERROR: %s\n", url, err)
  31. }
  32. // 300及以上状态码都算异常
  33. if resp.StatusCode >= 300 {
  34. errMsg := fmt.Sprintf("请求接口 %s 失败! 返回内容: %s ,返回状态码: %d\n", url, string(body), resp.StatusCode)
  35. log.Println(errMsg)
  36. err = fmt.Errorf(errMsg)
  37. }
  38. return body, err
  39. }