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): ...
随机推荐
- pickle 数据对象的序列化和反序列化
python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...
- JS位操作符
1.按位与 AND & var result = 25 & 3; alert(result); //1var result2 = 25 & -3;alert(result2); ...
- AD834+表面声波滤波器调试小结
AD834:带宽较宽,300M无压力,但是输出幅度小,当输入2VPPX2VPP的时候最大输出400mVPP.一个特别要注意的地方是输入走线尽量短,敷铜间距至少满足3倍线宽,不然隔直之后还会耦合信号进去 ...
- LeetCode Find Minimum in Rotated Sorted Array
原题链接在这里:https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ Method 1 就是找到第一个违反升序的值,就 ...
- 设置tomcat的编码为utf-8
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" ...
- JavaScript基础总结三部曲之一
JavaScript是一种基于对象的编程语言,基于对象指的是所有的对象已经由浏览器提供好了,用户直接使用就可以了. 另外,JS是嵌入在HTML语法之中的编程语言. PS:虽然是基于对象的语言,但是 ...
- python_模块
1. 模块的导入 (1) python中import module时,系统通常在哪些路径下面查找模块? 在以下的路径查找模块:sys.path 如果你模块所在的目录,不在sys.path的目录下,可以 ...
- passport 自动取密码
django settings.py """ Django settings for password project. Generated by . For more ...
- 数据库报ORA-00600: 内部错误代码, 参数: [17059],并产生大量trace日志文件
用户反馈数据库服务器磁盘空间使用耗尽. 登录服务器后查看,发现数据库产生大量的trace日志,并在alert日志中发现ora-600错误 alert日志信息: Fri Jul :: Errors ): ...
- 如何用Java解析CSV文件
首先看一下csv文件的规则: csv(Comma Separate Values)文件即逗号分隔符文件,它是一种文本文件,可以直接以文本打开,以逗号分隔.windows默认用excel打开.它的格式包 ...