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

Go语言使用百度翻译api的更多相关文章

  1. C# 调用百度翻译Api

    这是简单的界面.用的是wpf,winform也可以 具体的操作类 public partial class MainWindow : Window { string url = "" ...

  2. 原生js简单调用百度翻译API实现的翻译工具

    先来个在线demo: js翻译工具 或者百度搜索js简单调用百度翻译API工具(不过有个小小的界面显示bug,我想细心的人应该会发现) 或者直接前往该网址:js翻译工具 或者前往我的github:gi ...

  3. 百度翻译API(C#)

    百度翻译开放平台:点击打开链接 1. 定义类用于保存解析json得到的结果 public class Translation { public string Src { get; set; } pub ...

  4. 百度翻译api 实现简易微信翻译小程序

    介绍 口袋翻译 口袋翻译 微信小程序 翻译功能 含7类语言的相互翻译 包含最近10条的翻译历史回溯功能 微信搜索:简e翻译 功能展示   使用百度翻译api需要申请 appid 与 key 并在 ap ...

  5. 百度翻译api初使用(很久没写python了,写几行玩玩)

    调用free api做做简易的翻译 这个是百度翻译api文档 http://api.fanyi.baidu.com/api/trans/product/apidoc 照着百度api给的文档向web服务 ...

  6. 申请百度翻译API

    申请百度翻译API 0x00 前期准备 百度账号 md5的相关知识 0x01 进入百度开放平台,登录你的百度账号 找到 产品服务 -> 通用翻译API 0x02 点击下面的立即使用按钮,注册成为 ...

  7. 基于百度翻译API开发属于自己的翻译工具

    你是否每天使用着网页翻译工具?你是否遇到过这种情况,上网过程中遇到一个很长的单词但是又不能复制,要开两个浏览器,一个打开百度翻译,照着另一个网页输入单词?你安装了各种翻译软件后,又删除,只因忍受不了那 ...

  8. Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

  9. WP8.1小梦词典开发2:百度翻译API使用

    原文出自:http://www.bcmeng.com/api2/ 小梦昨天和大家分享了WP8.1金山词霸API使用方法,今天继续分享windows phone 8.1中百度翻译API的使用方法.和昨天 ...

随机推荐

  1. 长大Tips的第一步

    任务进度:登陆界面的初步设计. 运行环境:windows10 编译环境:netbeans 编写语言:java 界面展示: 任务简介: 本次任务指示简单的完成了界面设计,登陆按钮暂未实现,持续更新中,敬 ...

  2. 关于git的使用

    一.关于GIT Git --- The stupid content tracker, 傻瓜内容跟踪器.Linus Torvalds 是这样给我们介绍 Git 的.   Git 是用于 Linux内核 ...

  3. 【[HAOI2011]Problem c】

    好题啊 先考虑一些如何判掉无解的情况 我们开一个桶,存一下每个编号有多少个人必须选,之后做一个后缀和,之后我们扫一遍,如果一旦有一个后缀和\(pre[i]\)超过\(n-i+1\)就不合法了,因为我们 ...

  4. Hibernate的优缺点:

    1.Hibernate的优缺点:优点:1.程序更加面向对象:2.提高了生产率:3.方便移植(修改配置文件):4.无侵入性.缺点:1.效率比JDBC略差:2.不适合批量操作. 总的来说,hibernat ...

  5. 【luogu P3368 树状数组2】 模板

    题目链接:https://www.luogu.org/problemnew/show/P3368 #include<iostream> #include<cstdio> #in ...

  6. 推荐几个Mac/Linux下比较好用的工具

    1.Tmux,连接开发机可以让在任务在开发机一直执行,不用nohup &这种了也相对稳定,还有session可以记录当时的状态. 常用命令: tmux new -s name 指定名字开启一个 ...

  7. 固定导航栏demo

    代码如下 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...

  8. 数据流管理:redux

    redux和react是两个独立的库,所以redux并不是非用不可,是在Flux框架的基础上改进的一个框架,所以一鸣惊人 redux的三大基本原则 唯一的数据源(single source of tr ...

  9. 简析--UUID

    内容转载自:http://www.cnblogs.com/java-class/p/4727698.html 阅读目录 1.UUID简介 2.UUID组成 3.UUID实战演练 1.UUID 简介 U ...

  10. 爬虫——Handler处理器 和 自定义Opener

    我们之前一直都在使用的urlopen,这是一个特殊的opener(也就是模块帮我们构建好的). 但是基本的urlopen()方法不支持代理.cookie等其他的HTTP/HTTPS高级功能.所以要支持 ...