package services import ( "bytes" "encoding/json" "fmt" "hongze/hongze_open_api/utils" "io/ioutil" "net/http" "strconv" ) var ( googleTranslateUrl = "http://47.254.37.124:8396/api/google/translate" googleSingleTranslateUrl = "http://47.254.37.124:8396/api/google/translate/single" ) type GoogleApiResp struct { Code int `json:"code"` Msg string `json:"msg"` ErrMsg string `json:"err_msg"` Data GoogleApiRespData `json:"data"` } type GoogleApiRespData struct { ContentEn string `json:"content_en"` } // content 为json字符串 func GoogleTranslateApi(content string) (contentEnMap map[string]string, err error, errMsg string) { params := make(map[string]interface{}) params["content"] = content bytesData, err := json.Marshal(params) if err != nil { err = fmt.Errorf("json.Marshal Err:" + err.Error()) return } utils.FileLog.Info("googleTranslateData:" + string(bytesData)) // 将解析之后的数据转为*Reader类型 reader := bytes.NewReader(bytesData) resp, err := http.Post(googleTranslateUrl, "application/json", reader) if err != nil { errMsg = err.Error() err = fmt.Errorf("调用谷歌翻译接口失败") return } defer resp.Body.Close() if resp.StatusCode != 200 { err = fmt.Errorf("调用谷歌翻译接口失败") errMsg = "Status Code: " + strconv.Itoa(resp.StatusCode) return } body, _ := ioutil.ReadAll(resp.Body) //fmt.Println(string(body)) var ret GoogleApiResp err = json.Unmarshal(body, &ret) if err != nil { errMsg = "解析谷歌翻译接口返回值失败 json.Unmarshal Err " + err.Error() err = fmt.Errorf("解析谷歌翻译接口返回值失败") return } if ret.Code != 200 { err = fmt.Errorf("翻译失败 GoogleTranslateApi:" + ret.Msg) errMsg = "ret code:" + strconv.Itoa(ret.Code) + ret.ErrMsg return } contentEnMap = make(map[string]string, 0) err = json.Unmarshal([]byte(ret.Data.ContentEn), &contentEnMap) if err != nil { errMsg = "解析谷歌翻译接口返回值失败2 json.Unmarshal Err " + err.Error() err = fmt.Errorf("解析谷歌翻译接口返回值失败") return } return } // GoogleSingleTranslateApi content 为简单字符串 func GoogleSingleTranslateApi(content string) (contentEn string, err error, errMsg string) { params := make(map[string]interface{}) params["content"] = content bytesData, err := json.Marshal(params) if err != nil { err = fmt.Errorf("json.Marshal Err:" + err.Error()) return } // 将解析之后的数据转为*Reader类型 reader := bytes.NewReader(bytesData) resp, err := http.Post(googleSingleTranslateUrl, "application/json", reader) if err != nil { errMsg = err.Error() err = fmt.Errorf("调用谷歌翻译接口失败") return } defer resp.Body.Close() if resp.StatusCode != 200 { err = fmt.Errorf("调用谷歌翻译接口失败") errMsg = "Status Code: " + strconv.Itoa(resp.StatusCode) return } body, _ := ioutil.ReadAll(resp.Body) //fmt.Println(string(body)) var ret GoogleApiResp err = json.Unmarshal(body, &ret) if err != nil { errMsg = "解析谷歌翻译接口返回值失败 json.Unmarshal Err " + err.Error() err = fmt.Errorf("解析谷歌翻译接口返回值失败") return } if ret.Code != 200 { err = fmt.Errorf("翻译失败:" + ret.Msg) errMsg = "ret code:" + strconv.Itoa(ret.Code) + ret.ErrMsg return } contentEn = ret.Data.ContentEn return }