Zelig[冰冷的变色龙]-C/C++/Delphi/Golang小记[记录自己学习,记录Windows/Linux/Mac 学习小记]

Golang-百度翻译的API 开发小记

翻译的有很多 谷歌啊 百度啊 有道啊
我们中国人吗 哈(……..) 无奈。。。。用百度吧.

下面的是翻译的 api地址

通用翻译API HTTP地址:
http://api.fanyi.baidu.com/api/trans/vip/translate
通用翻译API HTTPS地址:
https://fanyi-api.baidu.com/api/trans/vip/translate

再来看看输入的参数表


https://api.fanyi.baidu.com/product/113 详细的介绍请看这个链接

好吧我们用Go 写一个 函数 它这个是 可以用 get/post 来请求的
我这边就用post了  好了 上代码咯

func BaiduTranslate(appid string, appkey string, fr string, to string, query string) string {
    client := &http.Client{Timeout: 5 * time.Second}

    rand.Seed(int64(time.Now().UnixNano()))
    salt := strconv.Itoa(rand.Intn(32768) + (65536 - 32768))
    sign := MD5(appid + query + salt + appkey)

    payload := url.Values{"appid": {appid}, "q": {query}, "from": {fr}, "to": {to}, "salt": {salt}, "sign": {sign}}
    resp, err := client.Post(apiURL,
        "application/x-www-form-urlencoded",
        strings.NewReader(payload.Encode()))


    if err == nil {
        defer resp.Body.Close()
        data, _ := ioutil.ReadAll(resp.Body)
        JO := gjson.ParseBytes(data)
        if JO.Exists() {
            if JO.Get("error_code").Int() > 0 { // 如果存在 这个字段肯定不会是零的咯
                return JO.Get("error_msg").String()
            }

            if JO.Get("trans_result").IsArray() {
                return JO.Get("trans_result").Array()[0].Get("dst").String()
            }
        }
    }

    return ""
}

上面的 函数用到一个 MD5的 下面也贴出来

func MD5(str string) string {
    _md5 := md5.New()
    _md5.Write([]byte(str))
    return hex.EncodeToString(_md5.Sum([]byte("")))
}

调用的话

S :=  BaiduTranslate("id","key","en", "zh","This is Golang tutorial series.")

参数
你开通的 百度 id , key
从语言到语言
原文

这边我习惯了 使用 gjson来解析 json的数据  你们也可以改成你们习惯的
如果也使用 gjson  没有安装的话 通过下面的命令 安装下

go get -u github.com/tidwall/gjson
打赏

相关推荐

评论

  • 昵称 (必填)
  • 邮箱
  • 网址