package pdd import ( "bytes" "duoduo/conf" "duoduo/tools" "duoduo/tools/app" "fmt" "io/ioutil" "net/http" "sort" ) func PostPdd(inputObj interface{}, outputObj interface{}, function string) error { //数据转json jsonData, err := tools.JsonMarshal(inputObj) if err != nil { fmt.Println(err.Error()) return err } var jsonStr = []byte(jsonData) //转换二进制 buffer := bytes.NewBuffer(jsonStr) fmt.Print("jsonData = ", jsonData) confIni, errConf := conf.ConnIni() if errConf != nil { fmt.Println(errConf) } path := confIni.MustValue("pdd", "api_http") fmt.Print(path) //path = "https://gw-api.pinduoduo.com/api/router?type=pdd.ddk.goods.search&data_type=JSON&client_id=a5d05569c6584a50bfb6600b2d150bae×tamp=1620461572&sign=8F2C23805C8B8A388AFB512DD3EAD727" request, err := http.NewRequest("POST", path, buffer) if err != nil { fmt.Println(err.Error()) return err } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} //创建客户端 resp, err := client.Do(request) //发送请求 if err != nil { fmt.Printf("client.Do%v", err) return err } respBytes, err := ioutil.ReadAll(resp.Body) fmt.Print(string(respBytes)) return nil } func PostDDk(inputObj interface{}, outputObj interface{}) (string, error) { //数据转json jsonData, err := tools.JsonMarshal(inputObj) if err != nil { return "", err } fmt.Print(jsonData) var jsonStr = []byte(jsonData) //转换二进制 buffer := bytes.NewBuffer(jsonStr) confIni, errConf := conf.ConnIni() if errConf != nil { return "", err } path := confIni.MustValue("pdd", "api_http") fmt.Print(path) request, err := http.NewRequest("POST", path, buffer) if err != nil { fmt.Println(err.Error()) return "", err } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} //创建客户端 resp, err := client.Do(request) //发送请求 if err != nil { fmt.Printf("client.Do%v", err) return "", err } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { return "", err } fmt.Print("respBytes = ", string(respBytes)) return string(respBytes), nil } func DDKSign(inputObj interface{}) (string, error) { jsonData, err := tools.JsonMarshal(inputObj) if err != nil { return "", err } pddSearch := make(map[string]string) err = tools.JsonUnmarshal(jsonData, &pddSearch) if err != nil { return "", err } confIni, errConf := conf.ConnIni() if errConf != nil { return "", err } path := confIni.MustValue("pdd", "api_http") fmt.Print(path) var ks []string for k, v := range pddSearch { fmt.Print(k) fmt.Print(v) if v != "sign" { ks = append(ks, k) } } sort.Strings(ks) plainText := confIni.MustValue("pdd", "client_secret") //排序后拼接数据 for i := 0; i < len(ks); i++ { fmt.Print(ks[i]) plainText = plainText + ks[i] plainText = plainText + pddSearch[ks[i]] } plainText += confIni.MustValue("pdd", "client_secret") fmt.Print("plainText = ", plainText) sign := tools.MD5(plainText) fmt.Print(sign) return sign, nil } //调用阿里接口 func Post(inputObj interface{}, outputObj interface{}, function string) error { //加载配置 confIni, errConf := conf.ConnIni() if errConf != nil { fmt.Println(errConf) } hostAdd := fmt.Sprintf("%s", confIni.MustValue("aliSet", "ali_host")) fmt.Println(hostAdd) //数据转json jsonData, err := tools.JsonMarshal(inputObj) if err != nil { fmt.Println(err.Error()) return err } app.TispELKLogs(function, "POST", jsonData) fmt.Print("json = ", jsonData) request, err := http.NewRequest("POST", hostAdd, bytes.NewBuffer([]byte(jsonData))) if err != nil { fmt.Println(err.Error()) return err } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} //创建客户端 resp, err := client.Do(request) //发送请求 if err != nil { fmt.Printf("client.Do%v", err) return err } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Printf("ioutil.ReadAll%v", err) return err } fmt.Println(string(respBytes)) err = tools.JsonUnmarshal(string(respBytes), outputObj) if err != nil { return err } app.TispELKOutDataLogs(function, "POST", string(respBytes)) return nil ////byte数组直接转成string,优化内存 //str := (*string)(unsafe.Pointer(&respBytes)) }