翻译功能实现详解

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

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

第一步:申请有道翻译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 条评论
登录 后参与评论

相关文章

来自专栏信安之路

HCTF2017的三个WriteUp

解决方法就是先 undefine 掉函数,再右键选择 Code,最后 Create function 就可以正常反编译了。

940
来自专栏码农笔录

网站调用支付宝进行支付-Java后台调用支付宝支付

1333
来自专栏IT笔记

JAVAWEB开发的微信公众号H5支付

一切需求都是来源于业务需要,前一阵子做了微信扫码支付,的确相对PC用户来说方便了很多。但是如果手机下单,你总不能让用户自己扫自己吧?查看了一下文档,微信还是支持...

1K5
来自专栏维C果糖

史上最简单的 MySQL 教程(十五)「列属性 之 自动增长」

自动增长:auto_increment,当对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取已有的最大值再进行+...

3476
来自专栏木东居士的专栏

漫谈并发和并行:死磕哲学家进餐问题

1744
来自专栏积累沉淀

java事物处理

事物处理 什么是事物:个人认为事物,就是对数据库进行一组操作动作的集合,如果一组处理步骤要么全发生,要么一步也不执行,称这组处理步骤为一个事物。当所...

1989
来自专栏iOS技术

YYCache 源码剖析:一览亮点

YYCache 作为当下 iOS 圈最流行的缓存框架,有着优越的性能和绝佳的设计。笔者花了些时间对其“解剖”了一番,发现了很多有意思的东西,所以写下本文分享一下...

3285
来自专栏坚毅的PHP

[node.js]开放平台接口调用测试

遇到的问题:Node.js JSON parsing error,syntax error unexpect end of input 测试代码 //测试/st...

3676
来自专栏小特工作室

1分钟生成Net对象的注释

      我们在开发过程中,肯定会有几个项目作为基础项目,存放一些比较常用的类和方法,供其他项目使用.一般来说,方法实现以后,就不想再去管它了,以致于新加入的...

1856
来自专栏祝威廉

Kafka Zero-Copy 使用分析

Kafka 我个人感觉是性能优化的典范。而且使用Scala开发,代码写的也很漂亮的。重点我觉得有四个

762

扫码关注云+社区