google_translate.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package services
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "hongze/hongze_open_api/utils"
  7. "io/ioutil"
  8. "net/http"
  9. "strconv"
  10. )
  11. var (
  12. googleTranslateUrl = "http://8.210.169.38:8396/api/google/translate"
  13. )
  14. type GoogleApiResp struct {
  15. Code int `json:"code"`
  16. Msg string `json:"msg"`
  17. ErrMsg string `json:"err_msg"`
  18. Data GoogleApiRespData `json:"data"`
  19. }
  20. type GoogleApiRespData struct {
  21. ContentEn string `json:"content_en"`
  22. }
  23. // content 为json字符串
  24. func GoogleTranslateApi(content string) (contentEnMap map[string]string, err error, errMsg string) {
  25. params := make(map[string]interface{})
  26. params["content"] = content
  27. bytesData, err := json.Marshal(params)
  28. if err != nil {
  29. err = fmt.Errorf("json.Marshal Err:" + err.Error())
  30. return
  31. }
  32. utils.FileLog.Info("googleTranslateData:"+string(bytesData))
  33. // 将解析之后的数据转为*Reader类型
  34. reader := bytes.NewReader(bytesData)
  35. resp, err := http.Post(googleTranslateUrl, "application/json", reader)
  36. if err != nil {
  37. errMsg = err.Error()
  38. err = fmt.Errorf("调用谷歌翻译接口失败")
  39. return
  40. }
  41. defer resp.Body.Close()
  42. if resp.StatusCode != 200 {
  43. err = fmt.Errorf("调用谷歌翻译接口失败")
  44. errMsg = "Status Code: " + strconv.Itoa(resp.StatusCode)
  45. return
  46. }
  47. body, _ := ioutil.ReadAll(resp.Body)
  48. //fmt.Println(string(body))
  49. var ret GoogleApiResp
  50. err = json.Unmarshal(body, &ret)
  51. if err != nil {
  52. errMsg = "解析谷歌翻译接口返回值失败 json.Unmarshal Err " +err.Error()
  53. err = fmt.Errorf("解析谷歌翻译接口返回值失败")
  54. return
  55. }
  56. if ret.Code != 200 {
  57. err = fmt.Errorf(ret.Msg)
  58. errMsg = ret.ErrMsg
  59. return
  60. }
  61. contentEnMap = make(map[string]string , 0)
  62. err = json.Unmarshal([]byte(ret.Data.ContentEn), &contentEnMap)
  63. if err != nil {
  64. errMsg = "解析谷歌翻译接口返回值失败2 json.Unmarshal Err " +err.Error()
  65. err = fmt.Errorf("解析谷歌翻译接口返回值失败")
  66. return
  67. }
  68. return
  69. }