get.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package pdd
  2. import (
  3. "duoduo/conf"
  4. "fmt"
  5. "github.com/asmcos/requests"
  6. "reflect"
  7. "strconv"
  8. )
  9. //
  10. func DuoDuoGet(url string) (outData string, err error) {
  11. req := requests.Requests()
  12. resp, err := req.Get(url)
  13. if err != nil {
  14. return "", err
  15. } else {
  16. return resp.Text(), err
  17. }
  18. }
  19. func Sign() {
  20. }
  21. // 解析 拼接请求
  22. func Get(getData interface{}, url string) (outData string, err error) {
  23. //加载配置
  24. confIni, errConf := conf.ConnIni()
  25. if errConf != nil {
  26. fmt.Println(errConf)
  27. }
  28. host := confIni.MustValue("tisp", "postadd")
  29. // 1、通过json变量来获取所有Get的参数
  30. parameter := ""
  31. getType := reflect.TypeOf(getData)
  32. getValue := reflect.ValueOf(getData)
  33. for i := 0; i < getType.NumField(); i++ {
  34. valueType := getType.Field(i).Type.String()
  35. value := getValue.Field(i)
  36. tagName := getType.Field(i).Tag.Get("json")
  37. // 如果是int类型,并且是0,抛弃
  38. if valueType == "int" && value.Int() != 0 {
  39. if parameter != "" {
  40. parameter += "&"
  41. }
  42. parameter += tagName + "=" + strconv.FormatInt(value.Int(), 10)
  43. }
  44. // 如果是string类型,并且是空字符串,抛弃。
  45. if valueType == "string" && value.String() != "" {
  46. if parameter != "" {
  47. parameter += "&"
  48. }
  49. parameter += tagName + "=" + value.String()
  50. }
  51. }
  52. // 2、组合Url
  53. urlAddress := fmt.Sprintf("%s%s?%s", host, url, parameter)
  54. fmt.Println("url = ", urlAddress)
  55. // 3、请求Html
  56. req := requests.Requests()
  57. resp, err := req.Get(urlAddress)
  58. if err != nil {
  59. fmt.Println("err = ", err.Error())
  60. return "", err
  61. } else {
  62. return resp.Text(), nil
  63. }
  64. }