post.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package pdd
  2. import (
  3. "bytes"
  4. "duoduo/conf"
  5. "duoduo/tools"
  6. "duoduo/tools/app"
  7. "fmt"
  8. "io/ioutil"
  9. "net/http"
  10. "sort"
  11. )
  12. func PostPdd(inputObj interface{}, outputObj interface{}, function string) error {
  13. //数据转json
  14. jsonData, err := tools.JsonMarshal(inputObj)
  15. if err != nil {
  16. fmt.Println(err.Error())
  17. return err
  18. }
  19. var jsonStr = []byte(jsonData) //转换二进制
  20. buffer := bytes.NewBuffer(jsonStr)
  21. fmt.Print("jsonData = ", jsonData)
  22. confIni, errConf := conf.ConnIni()
  23. if errConf != nil {
  24. fmt.Println(errConf)
  25. }
  26. path := confIni.MustValue("pdd", "api_http")
  27. fmt.Print(path)
  28. //path = "https://gw-api.pinduoduo.com/api/router?type=pdd.ddk.goods.search&data_type=JSON&client_id=a5d05569c6584a50bfb6600b2d150bae&timestamp=1620461572&sign=8F2C23805C8B8A388AFB512DD3EAD727"
  29. request, err := http.NewRequest("POST", path, buffer)
  30. if err != nil {
  31. fmt.Println(err.Error())
  32. return err
  33. }
  34. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  35. client := http.Client{}
  36. //创建客户端
  37. resp, err := client.Do(request) //发送请求
  38. if err != nil {
  39. fmt.Printf("client.Do%v", err)
  40. return err
  41. }
  42. respBytes, err := ioutil.ReadAll(resp.Body)
  43. fmt.Print(string(respBytes))
  44. return nil
  45. }
  46. func PostDDk(inputObj interface{}, outputObj interface{}) (string, error) {
  47. //数据转json
  48. jsonData, err := tools.JsonMarshal(inputObj)
  49. if err != nil {
  50. return "", err
  51. }
  52. fmt.Print(jsonData)
  53. var jsonStr = []byte(jsonData) //转换二进制
  54. buffer := bytes.NewBuffer(jsonStr)
  55. confIni, errConf := conf.ConnIni()
  56. if errConf != nil {
  57. return "", err
  58. }
  59. path := confIni.MustValue("pdd", "api_http")
  60. fmt.Print(path)
  61. request, err := http.NewRequest("POST", path, buffer)
  62. if err != nil {
  63. fmt.Println(err.Error())
  64. return "", err
  65. }
  66. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  67. client := http.Client{}
  68. //创建客户端
  69. resp, err := client.Do(request) //发送请求
  70. if err != nil {
  71. fmt.Printf("client.Do%v", err)
  72. return "", err
  73. }
  74. respBytes, err := ioutil.ReadAll(resp.Body)
  75. if err != nil {
  76. return "", err
  77. }
  78. fmt.Print("respBytes = ", string(respBytes))
  79. return string(respBytes), nil
  80. }
  81. func DDKSign(inputObj interface{}) (string, error) {
  82. jsonData, err := tools.JsonMarshal(inputObj)
  83. if err != nil {
  84. return "", err
  85. }
  86. pddSearch := make(map[string]string)
  87. err = tools.JsonUnmarshal(jsonData, &pddSearch)
  88. if err != nil {
  89. return "", err
  90. }
  91. confIni, errConf := conf.ConnIni()
  92. if errConf != nil {
  93. return "", err
  94. }
  95. path := confIni.MustValue("pdd", "api_http")
  96. fmt.Print(path)
  97. var ks []string
  98. for k, v := range pddSearch {
  99. fmt.Print(k)
  100. fmt.Print(v)
  101. if v != "sign" {
  102. ks = append(ks, k)
  103. }
  104. }
  105. sort.Strings(ks)
  106. plainText := confIni.MustValue("pdd", "client_secret")
  107. //排序后拼接数据
  108. for i := 0; i < len(ks); i++ {
  109. fmt.Print(ks[i])
  110. plainText = plainText + ks[i]
  111. plainText = plainText + pddSearch[ks[i]]
  112. }
  113. plainText += confIni.MustValue("pdd", "client_secret")
  114. fmt.Print("plainText = ", plainText)
  115. sign := tools.MD5(plainText)
  116. fmt.Print(sign)
  117. return sign, nil
  118. }
  119. //调用阿里接口
  120. func Post(inputObj interface{}, outputObj interface{}, function string) error {
  121. //加载配置
  122. confIni, errConf := conf.ConnIni()
  123. if errConf != nil {
  124. fmt.Println(errConf)
  125. }
  126. hostAdd := fmt.Sprintf("%s", confIni.MustValue("aliSet", "ali_host"))
  127. fmt.Println(hostAdd)
  128. //数据转json
  129. jsonData, err := tools.JsonMarshal(inputObj)
  130. if err != nil {
  131. fmt.Println(err.Error())
  132. return err
  133. }
  134. app.TispELKLogs(function, "POST", jsonData)
  135. fmt.Print("json = ", jsonData)
  136. request, err := http.NewRequest("POST", hostAdd, bytes.NewBuffer([]byte(jsonData)))
  137. if err != nil {
  138. fmt.Println(err.Error())
  139. return err
  140. }
  141. request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  142. client := http.Client{}
  143. //创建客户端
  144. resp, err := client.Do(request) //发送请求
  145. if err != nil {
  146. fmt.Printf("client.Do%v", err)
  147. return err
  148. }
  149. respBytes, err := ioutil.ReadAll(resp.Body)
  150. if err != nil {
  151. fmt.Printf("ioutil.ReadAll%v", err)
  152. return err
  153. }
  154. fmt.Println(string(respBytes))
  155. err = tools.JsonUnmarshal(string(respBytes), outputObj)
  156. if err != nil {
  157. return err
  158. }
  159. app.TispELKOutDataLogs(function, "POST", string(respBytes))
  160. return nil
  161. ////byte数组直接转成string,优化内存
  162. //str := (*string)(unsafe.Pointer(&respBytes))
  163. }