• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go语言使用百度翻译api

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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转码?这个目前找了一下,还没有找到合适的方法进行转换。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
开始读 Go 源码了发布时间:2022-07-10
下一篇:
go语言新建多维map集合发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap