android有道翻译代码,Android应用记录一:有道翻译API调用(示例代码)
因为某些原因,我需要记单词,而且讨厌广告,所以就想着自己写个能够查自己不认识的单词并且以后可以随时查看的APP。
首先我需要调用一个翻译API,中文翻译比较好用的API有有道翻译API,百度翻译API等,因为先期用过百度地图API,觉得很好用,所以我先查阅了百度翻译API
觉得还不错,因为我写的APP是给自己用的,所以这肯定够用,然后我就申请了一个API接口,当我看了文档之后,百度为了安全的原因,在现版本的接口中加入了签名,通过一定的输入序列形成MD5序列,而这个感觉有点麻烦,虽然我后来试了下,可以用的,但是当时觉得时间不多,就转而使用了有道翻译API
首先要做的肯定是申请key,然后看了下API接入文档,发现有道的API很简单粗暴,其数据接口为:
官方说明
版本:1.1,请求方式:get,编码方式:utf-8
主要功能:中英互译,同时获得有道翻译结果和有道词典结果(可能没有)
参数说明:
type - 返回结果的类型,固定为data
doctype - 返回结果的数据格式,xml或json或jsonp
version - 版本,当前最新版本为1.1
q - 要翻译的文本,必须是UTF-8编码,字符长度不能超过200个字符,需要进行urlencode编码
only - 可选参数,dict表示只获取词典数据,translate表示只获取翻译数据,默认为都获取
注: 词典结果只支持中英互译,翻译结果支持英日韩法俄西到中文的翻译以及中文到英语的翻译
errorCode:
0 - 正常
20 - 要翻译的文本过长
30 - 无法进行有效的翻译
40 - 不支持的语言类型
50 - 无效的key
60 - 无词典结果,仅在获取词典结果生效
http://fanyi.youdao.com/openapi.do?keyfrom=&key=&type=data&doctype=json&version=1.1&q=good
{"errorCode":0
"query":"good","translation":["好"], //有道翻译
"basic":{ //有道词典-基本词典
"phonetic":"g?d"
"uk-phonetic":"g?d" //英式发音
"us-phonetic":"ɡ?d" //美式发音
"explains":["好处","好的"
"好"]
},"web":[ //有道词典-网络释义
{"key":"good","value":["良好","善","美好"]
},
{...}
]
}
其中我需要就更改q也就是需要查询的对象就可以了,其他可以通过Java写入String中
我的思路就是通过发送HTTP请求返回所需要的翻译结果数据,然后对返回来的JSON进行解析就可以了,以下是我所使用的代码
private voidSentInquire(String q) {
HttpClient httpClient= newDefaultHttpClient();
String ServerUrl= urlString +q;
String data_backString= "";
HttpPost httpRequst= newHttpPost(ServerUrl);try{
HttpResponse response=httpClient.execute(httpRequst);if (response.getStatusLine().getStatusCode() ==HttpStatus.SC_OK) {
data_backString= EntityUtils.toString(response.getEntity());//接收返回的数据
System.out.println(data_backString);
Log.i(TAG,"result = " +data_backString);//以下为JSON数据解析
try{//JSONArray jsonArray = new JSONArray(data_backString);
JSONObject jsonObject2 = newJSONObject(data_backString);//String string=jsonObject2.getString("translation");//receiveString=string;//JSONObject jsonObject3=new//JSONObject(jsonObject2.getString("basic"));
JSONObject jsonObject3 =(JSONObject) jsonObject2
.get("basic");
receiveString= jsonObject3.getString("explains");
JSONArray jsonArray1= newJSONArray(receiveString);
receiveString= "";for (int i = 0; i < jsonArray1.length(); i++) {
receiveString+= jsonArray1.getString(i) + "\n";
}//String[] strarray=receiveString.split(",");
/** for (int i = 0; i < strarray.length; i++) { //String
* mytemp
* =strarray[i].substring(strarray[i].indexOf("‘"),strarray
* [i].indexOf("‘")); receiveString+=mytemp+"\n"; }*/JSONArray jsonArray= jsonObject2.getJSONArray("web");for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObjectSon=(JSONObject) jsonArray
.opt(i);
receiveString+= jsonObjectSon.getString("key");
receiveString+= ":";//String valueTemp=jsonObjectSon.getString("value");
JSONArray valueArray = newJSONArray(
jsonObjectSon.getString("value"));for (int j = 0; j < valueArray.length(); j++) {
receiveString+=valueArray.getString(j);
}
receiveString+= "\n";
}
mHandler.sendEmptyMessage(0);
}catch(Exception e) {//TODO: handle exception
e.printStackTrace();
System.out.println("-----出现异常------");
}
}
}catch(Exception e) {//TODO: handle exception
}
}
测试程序中返回来的JSON数据
{“translation”:[“帮助”],”basic”:{“us-phonetic”:”h?lp”,”phonetic”:”help”,”uk-phonetic”:”help”,”explains”:[“n. 帮助;补救办法;帮忙者;有益的东西”,”vt. 帮助;促进;治疗;补救”,”vi. 帮助;有用;招待”,”n. (Help)人名;(芬)海尔普”]},”query”:”help”,”errorCode”:0,”web”:[{“value”:[“帮助”,”帮忙”,”帮助文档”],”key”:”Help”},{“value”:[“自取所需”,”自用”,”自己动手”],”key”:”help oneself”},{“value”:[“帮帮忙”,”帮个大忙”,”帮助解决问题”],”key”:”Help out”}]}
解析JSON数据部分我从CSDN大神那儿学习的
特别注意一点,发送网络请求不能在主线程中进行,这是很多博客没有说明的,我们只需要开辟一个新的线程就可以了
还有不能在该线程中直接对view进行修改,需要通过handler发送修改view例如在textview中显示
这样我应用的核心部分完成了
完整代码下载地址
android有道翻译代码,Android应用记录一:有道翻译API调用(示例代码)相关推荐
- 竞彩足球混合过关赔率API调用示例代码
<?php // +---------------------------------------------------------------------- // | 竞彩足球混合过关赔率A ...
- 电竞英雄联盟数据API接口 - 【比赛列表】API调用示例代码
电竞英雄联盟数据API接口 - [比赛列表]API调用示例代码 分享使用 野子科技数据 https://www.xxe.io/ 接口调用的示例代码,今天接的是英雄联盟的[比赛列表]接口,跟之前不同的是 ...
- 竞彩足球混合过关赔率API调用示例代码2020版
$user = 'smmz'; $secret = '2e54c7eae2c5a6c01'; //竞彩足球混合过关数据 // +------------------------------------ ...
- 电竞Dota2数据API接口 - 【联赛列表】API调用示例代码
分享使用接口调用的示例代码,Dota2的[联赛列表]接口. import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotati ...
- 篮球数据API接口 - 【篮球赛事分析数据】API调用示例代码
分享使用接口调用的示例代码,篮球数据[篮球赛事分析数据]接口 package com.huaying.demo.basketball;import java.nio.charset.StandardC ...
- 足球数据API接口 - 【球员资料】API调用示例代码
分享下近期使用[球员资料]接口调用的示例代码. 近期感觉并没有遇到什么难点,很易用,另外作为足球比分数据API接口还是挺全面的 import javax.xml.bind.JAXBContext; i ...
- 足球数据API接口 - 【足球赛事分析数据】API调用示例代码
分享使用接口调用的示例代码,足球数据[足球赛事分析数据]接口 package com.huaying.demo.football;import java.nio.charset.StandardCha ...
- 篮球数据API接口 - 【篮球文字直播】API调用示例代码
分享使用接口调用的示例代码,篮球数据[篮球文字直播]接口 import java.nio.charset.StandardCharsets; import java.nio.file.Files; i ...
- 电竞英雄联盟数据API接口 - 【近期赛事列表】API调用示例代码
分享使用接口调用的示例代码,今天接的是英雄联盟的[近期赛事列表]接口. import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.an ...
- 电竞英雄联盟数据API接口 - 【联赛列表】API调用示例代码
分享使用接口调用的示例代码,今天接的是英雄联盟的[联赛列表]接口,跟之前不同的是,接口返回的是Json数据,这里使用Fastjson来解析. import com.alibaba.fastjson.J ...
最新文章
- SQL Server T-SQL高级查询
- Vue学习之路---No.7(分享心得,欢迎批评指正)
- plsqldev远程连接mysql_PLSQL Developer连接远程Oracle数据库
- 威联通NAS通过宝塔面板实现域名统一端口访问
- form表单回车提交问题
- 解决:Request header field Content-Type is not allowed by Access-Control-Allow-Headers
- Problem E:结构体---点坐标结构体
- Windows 10标题栏显示颜色
- 作业四:灯泡异常问题
- OpenSea联合创始人Devin Finzer:NFT空间在未来几年会产生更多应用 | FBEC 2020
- SQL Server中的功能和存储过程比较
- Java 自动装箱与拆箱(Autoboxing and unboxing)
- virtualbox下宿主机与虚拟机互通
- 2021-10-18
- requirejs加载layerdate.js遇到的各种坑
- 弹窗插件zDialog使用教程
- 组态王怎么做超级曲线_组态王显示数据并绘制曲线
- 【win+黑苹果双系统②】黑苹果设置开机启动+wifi
- 数字后端概念——shielding
- 高级5G网络优化工程师的要求,哪些人具备?
热门文章
- 风电最大化消纳的热电联产机组联合优化控制
- “Watson之眼”走出实验室,中国医疗机器人悄然崛起 | 未来医疗周刊
- C语言的前世今生与后世
- JavaScript将页面表格导出为Excel
- 百度关键词排名浮动怎么办?
- 【机器学习杂记】自注意力机制(Self-attention)
- JZOJ 3912. 【NOIP2014模拟11.2B组】超氧化钾
- D3(V7)树图绘制-数据可视化
- content-box与border-box区别
- 【C#+Access+WindowsAPI】实现仿360的安全卫士 一:功能展示与系统开发环境简介(附源码和资源)