Go语言使用百度翻译api 您所在的位置:网站首页 百度翻译58002 Go语言使用百度翻译api

Go语言使用百度翻译api

2024-06-04 13:12| 来源: 网络整理| 查看: 265

Go语言使用百度翻译api

之前做过一个使用百度翻译api的工具,这个工具用于用户的自动翻译功能,是使用C#调用百度翻译api接口,既然在学习Go语言,那必然也是要使用Go来玩耍一番。这里我是这么安排的,使用go做一个web服务,界面就用H5,然后使用用批处理写个脚本,打开go程序,然后打开浏览器(谷歌浏览器)访问。用户可以在浏览器网页中操作,好吧这里的用户估计就只有我会用吧。其中百度翻译api中的sign需要计算md5,那么Go中是如何计算md5的呢?参考如下:

package main import( "fmt" "crypto/md5" "encoding/hex" ) //计算文本的md5值 func SumString(content string) string{ md5Ctx := md5.New() md5Ctx.Write([]byte(content)) bys := md5Ctx.Sum(nil) //bys := md5.Sum([]byte(content))//这个md5.Sum返回的是数组,不是切片哦 value := hex.EncodeToString(bys) return value } func main(){ value := SumString("hello") fmt.Println(value) }

以下是完整调用百度翻译API的代码:

package main import( "fmt" "crypto/md5" "encoding/hex" "net/http" "time" "net/url" "io/ioutil" "strconv" ) //申请的信息 var appID = 你的appid var password = 你的密钥 //百度翻译api接口 var Url = "http://api.fanyi.baidu.com/api/trans/vip/translate" type TranslateModel struct{ Q string From string To string Appid int Salt int Sign string } func NewTranslateModeler(q, from, to string) TranslateModel{ tran := TranslateModel{ Q: q, From: from, To: to, } tran.Appid = appID tran.Salt = time.Now().Second() content := strconv.Itoa(appID) + q + strconv.Itoa(tran.Salt) + password sign := SumString(content)//计算sign值 tran.Sign = sign return tran } func (tran TranslateModel) ToValues() url.Values{ values := url.Values{ "q": {tran.Q}, "from": {tran.From}, "to": {tran.To}, "appid":{strconv.Itoa(tran.Appid)}, "salt": {strconv.Itoa(tran.Salt)}, "sign": {tran.Sign}, } return values } //计算文本的md5值 func SumString(content string) string{ md5Ctx := md5.New() md5Ctx.Write([]byte(content)) bys := md5Ctx.Sum(nil) //bys := md5.Sum([]byte(content))//这个md5.Sum返回的是数组,不是切片哦 value := hex.EncodeToString(bys) return value } func main(){ tran := NewTranslateModeler("世界第一223", "zh", "cht") values := tran.ToValues() resp, err := http.PostForm(Url, values) if err != nil{ fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil{ fmt.Println(err) return } txt := string(body) fmt.Println(txt) }

这是输出信息:

{"from":"zh","to":"cht","trans_result":[{"src":"\u4e16\u754c\u7b2c\u4e00223","dst":"\u4e16\u754c\u7b2c\u4e00223"}]}

这里得到的是Unicode编码的字符,如何将这里的Unicode转码?这个目前找了一下,还没有找到合适的方法进行转换。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有