翻译功能实现详解

相信体验过翻译功能的小伙伴都很好奇是怎么实现的呢?

其实很简单,简单三步即可完成:

第一步:申请有道翻译API key;

第二步:通过这个key值去调用有道API,返回一个包含翻译结果的json数据;

第三步:最后把json数据封装到微信文本消息中,返回给微信用户。

第一步

小黄人选用有道的API,当然也可以选用其他如百度翻译等的API,不过有些是收费的,有道API虽然不收费,但是限制使用次数,每个小时最多只能查询1000次。

首先访问有道翻译API官网:http://fanyi.youdao.com/openapi

选择“调用数据接口”

填写相关信息后申请

如果没有服务器,可以用前面所讲的ngrok映射外网的方式,填写映射出的URL,或者购买百度BAE,每天只需0.4元即可拥有一台简易的服务器,小黄人就是购买了一台百度BAE

根据API参数说明配置好参数

Json格式

第二步

这是调用API,返回结果的代码

/** * 简单翻译,回复简单译文 * @param yuanwen * @return * @throws Exception */ public String transalte(Stringyuanwen)throwsException { //设置URL编码为utf-8 StringyuanwenEncode= java.net.URLEncoder.encode(yuanwen,"utf-8"); StringmyURL= newString("http://fanyi.youdao.com/openapi.do?keyfrom=" + KEYFROM +"&key=" + KEY+ "&type=data&doctype=json&version=1.1&q=" + yuanwenEncode); System.out.println(myURL); URLurl= newURL(myURL); //获取链接 URLConnectioncon= url.openConnection(); //获取输入流 InputStreamin = con.getInputStream(); //以utf-8编码的方式读取输入流 InputStreamReaderins= newInputStreamReader(in,"utf-8"); BufferedReaderbr = new BufferedReader(ins); Stringtemp; StringBuildersb = new StringBuilder(); //每次读取一行 while((temp = br.readLine())!=null) { sb.append(temp); } //用json字符串初始化JSONObject对象 JSONObjectjsonObject= newJSONObject(sb.toString()); //获取JSONObject对象中key为translation的值,该值就是有道翻译的结果 Stringtranslation= jsonObject.getString("translation"); //去掉首尾的["和"]符号 translation = translation.substring(2, translation.length()-2); /* * 关闭资源 */ ins.close(); in.close(); returntranslation; }

第三步

把翻译的结果封装成微信可以接收的文本消息

这里简单看看,关于如何与微信后台通信,小黄人找时间另写一篇图文

public staticString initText(String fromUserName, String toUserName, String content) { TextMessagetextMessage = new TextMessage(); textMessage.setFromUserName(toUserName); textMessage.setToUserName(fromUserName); textMessage.setMsgType(MASSAGE_TEXT); textMessage.setCreateTime(newDate().getTime()); textMessage.setContent(content); returntextMessageToXml(textMessage); }

到这里就结束了,有兴趣的小伙伴也试试吧

·END·

原文发布于微信公众号 - 小黄人打代码(MinionsCoding)

原文发表时间:2016-08-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hightopo

HT for Web的HTML5树组件延迟加载技术实现

1094
来自专栏hightopo

原 HTML5树组件延迟加载技术实现

1155
来自专栏cloudskyme

使用jquery-easyui写的CRUD插件(2)

首先定义变量 var options = jQuery.extend({},jQuery.fn.crudUIGrid.defaults, options); ...

3415
来自专栏Jerry的SAP技术分享

S/4HANA for Customer Management里的搜索分页处理

这篇文章的英文版我发在了SAP Community上:Paging Implementation in S/4HANA for Customer Managem...

3794
来自专栏程序员的SOD蜜

消息服务框架使用案例之--大文件上传(断点续传)功能

消息服务框架使用案例之--大文件上传(断点续传)功能 一、分块上传和断点续传原理 在我们的一个产品应用中,客户需要上传大量的文件到服务器,其中不乏很大的视频文件...

4935
来自专栏性能与架构

Spring 5 响应式开发示例

1571
来自专栏非著名程序员

基于 RxJava2+Retrofit2 精心打造的 Android 基础框架 XSnow

XSnow ? 基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载、UI模...

2347
来自专栏逸鹏说道

C#注册表情缘

记得当时刚接触C#的时候,喜欢编写各种小软件,而注册表系列和网络系列被当时的我认为大牛的必备技能。直到我研究注册表前一天我都感觉他是那么的高深。 今天正好有空,...

3288
来自专栏jojo的技术小屋

转 前端代码异常日志收集与监控

☞ 收集日志的方法 平时收集日志的手段,可以归类为两个方面,一个是逻辑中的错误判断,为主动判断;一个是利用语言给我们提供的捷径,暴力式获取错误信息,如 try....

4269
来自专栏Jerry的SAP技术分享

SAP不同的产品是如何支持用户创建自定义字段的

我们从SAP CRM,Cloud for Customer(简称C4C)和S/4HANA这三个产品分别来看看。

983

扫码关注云+社区