FastJson之有道翻译
在AndroidMainifast.xml中加入相应的访问权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
在新的线程中连接网络,调用ConnNet.getNet()
public class ConnNet {
public String getNet(String msg) {
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("keyfrom", "rongguangfdasds"));
pairs.add(new BasicNameValuePair("key", "498519883"));
pairs.add(new BasicNameValuePair("type", "data"));
pairs.add(new BasicNameValuePair("doctype", "json"));
pairs.add(new BasicNameValuePair("version", "1.1"));
pairs.add(new BasicNameValuePair("q", msg));
String result= "";
ArrayList<Web> webs;
try {
Trans trans=new Trans();
trans = (Trans)new Http().get("openapi.do",pairs, Trans.class);
webs=trans.getWeb();
for(Web web:webs){
result+=web.getKey()+"-->"+web.getValue()+"<p>";
}
result+= trans.getTranslation()[0];
// result = new Http().get("openapi.do",pairs, Map.class).toString();
} catch (Exception e) {
return e.getMessage();
}
// HttpClient httpClient = new DefaultHttpClient();
// HttpGet httpGet = new HttpGet("http://fanyi.youdao.com/openapi.do?keyfrom=rongguangfdasds&key=498519883&type=data&doctype=json&version=1.1&q=" + msg);
// try {
// HttpResponse httpResponse = httpClient.execute(httpGet);
// String result = EntityUtils.toString(httpResponse.getEntity());
// Log.i("Res===", result);
// return result;
// } catch (IOException e) {
// e.printStackTrace();
// }
return result;
}
}
Http处理Http请求并返回JSON
public class Http {
public Object get(String url, List<NameValuePair> pairs,Class clzz) throws Exception {
String json;
// AppOption appOption = new AppOption();
String host="http://fanyi.youdao.com/";
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter("http.socket.timeout",3000);
client.getParams().setParameter("http.connection.timeout",3000);
client.getParams().setParameter("http.connection-manager.timeout", 60 * 60L);
String param= URLEncodedUtils.format(pairs, "UTF-8");
HttpGet httpget = new HttpGet(host + url+"?"+param);
httpget.setHeader("User-Agent", "boilingClient Of Android");
httpget.setHeader("userId", "rongguang");
try {
Log.i("d======",host + url+"?"+param);
HttpResponse httpResponse = client.execute(httpget);
json = EntityUtils.toString(httpResponse.getEntity());
System.out.println(">>$"+httpget.getURI());
} catch (IOException e) {
throw new Exception(e);
}
return JSON.parseObject(json,clzz);
}
}
数据实体
public class Trans {
private int errorCode;
private String[] translation;
private ArrayList<Web> web;
private String query;
public int getErrorCode() {
return errorCode;
}
public void setErrorCode(int errorCode) {
this.errorCode = errorCode;
}
public String[] getTranslation() {
return translation;
}
public void setTranslation(String[] translation) {
this.translation = translation;
}
public ArrayList<Web> getWeb() {
return web;
}
public void setWeb(ArrayList<Web> web) {
this.web = web;
}
public String getQuery() {
return query;
}
public void setQuery(String query) {
this.query = query;
}
}
public class Web {
private String key;
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
格式化Web对象为List<String>
public class ManWeb {
public List<String> parseWeb(ArrayList<Web>webs){
List<String> list = new ArrayList<String>();
for(Web web:webs){
list.add(web.getKey()+":"+web.getValue());
}
return list;
}
}
MainActivity把格式化后的Web放入到ListView中
trans_list.setAdapter(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,new ManWeb().parseWeb(trans.getWeb())));
在按钮监听方法中加入网络状态的判断,如果网络连接不可用进行提示,提高用户体验度
int netState=RongUtils.getAPNType(MainActivity.this);
if(netState!=-1) {
Message childMsg = mChildHandler.obtainMessage();
childMsg.obj = goods.getText().toString().trim();
mChildHandler.sendMessage(childMsg);
}else {
Toast.makeText(MainActivity.this,"网络连接不可用,请检查网络!",Toast.LENGTH_SHORT).show();
}
判断网络状态的类RongUtils
public class RongUtils {
/**
* 获取当前的网络状态 -1:没有网络 1:WIFI网络2:wap网络3:net网络
*/
public static int getAPNType(Context context){
int netType = -1;
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if(networkInfo==null){
return netType;
}
int nType = networkInfo.getType();
if(nType==ConnectivityManager.TYPE_MOBILE){
if(networkInfo.getExtraInfo().toLowerCase().equals("cmnet")){
netType = 3;
}
else{
netType = 2;
}
}
else if(nType==ConnectivityManager.TYPE_WIFI){
netType = 1;
}
return netType;
}
}
FastJson之有道翻译的更多相关文章
- java实现有道翻译爬虫
我的博文地址 https://www.cnblogs.com/lingdurebing/p/11618902.html 使用的库 1.commons-codec 主要是为了加密,可以直接用java原生 ...
- 添加了有道生词本的 chrome google翻译扩展和有道翻译扩展
在chrome发布项目,需要先花美金认证,还得要美国ID,无奈. 直接上源码,需手动导入. 原始项目源码并未开源,个人是从chrome本地文件里拿出来的,拓展来的,侵删(本来想着自已写一个,业余时间, ...
- 桌面每日一句--桌面翻译工具(有道翻译,微软翻译,Google翻译)
现在的翻译软件功能越来越多,也越来越臃肿,还不时弹广告,真的很烦恼. 鉴于这种情况,自己做了个翻译软件,能满足日常需求就好了.需要用的时候可以直接在桌面输入单词翻译,或者直接使用快捷键呼出翻译窗口.最 ...
- Python 实现有道翻译命令行版
一.个人需求 由于一直用Linux系统,对于词典的支持特别不好,对于我这英语渣渣的人来说,当看英文文档就一直卡壳,之前用惯了有道词典,感觉很不错,虽然有网页版的但是对于全站英文的网页来说并不支持.索性 ...
- 使用python在SAE上搭建一个微信应用,使用有道翻译的api进行在线翻译
1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,http://fanyi.youdao.com/openapi?path=da ...
- [Python] 使用有道翻译API
Python 使用youdao (有道翻译)API 想写一个给自己记录背单词状况的软件,需要获取英文单词的中文释义(基本功能).考虑使用有道翻译的API实现获取英文单词的中文释义的方法. 获取API_ ...
- 记微信开发(有道翻译api)
记微信开发(有道翻译api) 记微信开发(有道翻译api) 效果: 有道翻译api申请: 地址:http://fanyi.youdao.com/openapi code: <?php/** * ...
- 有道翻译API
轻奢侈品_百度百科 轻奢侈品 有道翻译API 有道翻译API申请成功 API key:72763558 keyfrom:lexus-studio
- Requests抓取有道翻译结果
Requests比urllib更加方便,抓取有道翻译非常的简单. import requests class YouDao(): def __init__(self,parm): ...
随机推荐
- ios UIPickerView 技巧集锦(包括循环滚动)
摘自: http://blog.csdn.net/ipromiseu/article/details/7436521 http://www.cnblogs.com/dabaopku/archive/2 ...
- ASP.NET中身份验证
ASP.NET中身份验证有三种方式:Windows.Forms和Passport. 1.Windows验证,基于窗体验证,需要每个页面写上验证身份代码,相对灵活,但操作过于复杂: 2.Passport ...
- 使用sql语句查询日期在一定时间内的数据
使用sql语句查询日期在一周内的数据 select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年 ...
- mobiscroll.js 使用
使用较为详情的参考网址:http://www.lanrenmaku.com/jMobile/2014_1231_1357.html
- jquery实现"跳到底部","回到顶部"效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- xp系统的安装SVN
xp系统安装SVN,出现错误: 解决办法: 1,首先确定xp体统是否为sp3,SVN安装需要在sp3以上: 2,检查windows Installer是否开启,解决:控制面板-管理工具-服务—wind ...
- android Shader类简介_渲染图像示例
Android中提供了Shader类专门用来渲染图像以及一些几何图形,Shader下面包括几个直接子类,分别是BitmapShader. ComposeShader.LinearGradient.Ra ...
- Java 多线程Future和FutureTask
Future表示一个任务的周期,并提供了相应的方法来判断是否已经完成或者取消,以及获取任务的结果和取消任务. Future接口源码: public interface Future<V> ...
- Redis一些基本的操作
代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- Windows平台注册mysql服务
将mysql 注册为服务: ->mysqld --install 卸载服务: ->mysqld --remove 命令行启动mysql: ->net start mysql 命令行关 ...