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. debug问题记录

    debug进不去,发现断点没有带勾. 方案:去掉所有断点,重新编译,debug启动,重新打断点. source里面加入自己的java project. 关掉所有的java页面!!! dobbo服务用d ...

  2. STM32-F429ZIT6-关于驱动安装

    第一步:下载驱动 1.个人百度云链接:http://pan.baidu.com/s/1dE8vxy5 密码:yow0 2.网站下载:这个还是直接百度吧. 第二步:驱动安装 注意:安装之前要先关闭安全监 ...

  3. iTunes备份路径,iTunes默认备份路径,iTunes修改备份路径

    1:当前iTunes版本: 2:帮助给出的答复: 3:修改的操作界面: 实际文件夹路径:

  4. hdu-2197 本原串---枚举因子+容斥定理

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2197 题目大意: 由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个 ...

  5. stixel-net绘制指标图

    需解决问题: 1.离散点进行平滑曲线画法 https://blog.csdn.net/cdqn10086/article/details/70143616 def draw_curve(x,y,img ...

  6. 【转】Uint8Array 转为 string,解决中文乱码

    来源: <http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197> / ...

  7. Spring 事务声明无效果(转)

    为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志.但是这边情况来了,当这个方法异常时候 日志是打印了,但是加的事务却没有回滚. 例:      类似这样的方法不会回滚 (一个 ...

  8. ECMAScript6

    ECMAScript6介绍 # ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现 # 有利于保证这门语言的开放性和中立性. # 标准在每年的 6 月份正 ...

  9. 小白袍 -- Chapter 1.4.1.1 URL编码的理论解读

    1.4.1.1  URL编码的理论解读 我们在做JavaWeb时避不过GET请求,GET请求和POST请求最大一点不同就在于参数,GET请求的参数会URL中,而POST请求的参数则会在HTTP Hea ...

  10. Java笔试--代码纠错

    package practice.javase; public abstract class Name { private String name; public abstract boolean i ...