在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之有道翻译的更多相关文章

  1. java实现有道翻译爬虫

    我的博文地址 https://www.cnblogs.com/lingdurebing/p/11618902.html 使用的库 1.commons-codec 主要是为了加密,可以直接用java原生 ...

  2. 添加了有道生词本的 chrome google翻译扩展和有道翻译扩展

    在chrome发布项目,需要先花美金认证,还得要美国ID,无奈. 直接上源码,需手动导入. 原始项目源码并未开源,个人是从chrome本地文件里拿出来的,拓展来的,侵删(本来想着自已写一个,业余时间, ...

  3. 桌面每日一句--桌面翻译工具(有道翻译,微软翻译,Google翻译)

    现在的翻译软件功能越来越多,也越来越臃肿,还不时弹广告,真的很烦恼. 鉴于这种情况,自己做了个翻译软件,能满足日常需求就好了.需要用的时候可以直接在桌面输入单词翻译,或者直接使用快捷键呼出翻译窗口.最 ...

  4. Python 实现有道翻译命令行版

    一.个人需求 由于一直用Linux系统,对于词典的支持特别不好,对于我这英语渣渣的人来说,当看英文文档就一直卡壳,之前用惯了有道词典,感觉很不错,虽然有网页版的但是对于全站英文的网页来说并不支持.索性 ...

  5. 使用python在SAE上搭建一个微信应用,使用有道翻译的api进行在线翻译

    1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,http://fanyi.youdao.com/openapi?path=da ...

  6. [Python] 使用有道翻译API

    Python 使用youdao (有道翻译)API 想写一个给自己记录背单词状况的软件,需要获取英文单词的中文释义(基本功能).考虑使用有道翻译的API实现获取英文单词的中文释义的方法. 获取API_ ...

  7. 记微信开发(有道翻译api)

    记微信开发(有道翻译api) 记微信开发(有道翻译api) 效果: 有道翻译api申请: 地址:http://fanyi.youdao.com/openapi code: <?php/** * ...

  8. 有道翻译API

    轻奢侈品_百度百科 轻奢侈品 有道翻译API 有道翻译API申请成功 API key:72763558 keyfrom:lexus-studio

  9. Requests抓取有道翻译结果

    Requests比urllib更加方便,抓取有道翻译非常的简单. import requests class YouDao():     def __init__(self,parm):        ...

随机推荐

  1. UITableViewCell 设置圆角

    #import <QuartzCore/QuartzCore.h> QuartzCore.framework [self.commentsCell.layer setMasksToBoun ...

  2. undefined和void

    1.undefined undefined在js中并不是关键字/保留字,因此在IE5.5~8中可以对undefined赋值,但是在IE9以上,对其赋值是无效的 <script> var a ...

  3. signed和unsigned

    signed:表示有符号位,最高位包括正数.负数和0: unsigned:表示无符号位,最高位表示 数值,不表示符号: signed int a:a 的取值范围是:-2^..... 这个就想不起来要占 ...

  4. java第一课堂

    java第一课堂视频请在优酷搜索java第一课堂即可

  5. python深复制和浅复制

    深复制:一个更改后不会影响到其他的变量,另一个变量B赋值给变量A时,虽然A和B的内存空间仍然相同,但当A的值发生变化时,会重新给A分配空间,A和B的地址变得不再相同 浅复制:改变一个就会引起另一个的改 ...

  6. Android 关于ExpandableListView刷新的解决办法

    正文 首先是最基础的 ExpandableListView vList = (ExpandableListView) this.findViewById(R.id.list); EListAdapte ...

  7. IDisplayTransformation

    IDisplayTransformation Bounds Full extent in world coordinates. The Bounds property controls the ful ...

  8. 装饰器、生成器,迭代器、Json & pickle 数据序列化

    1. 列表生成器:代码例子 a=[i*2 for i in range(10)] print(a) 运行效果如下: D:\python35\python.exe D:/python培训/s14/day ...

  9. 建立自己的Yum源

    转自http://kicklinux.com/setup-yum-repos-server/ 命令 reposync 可以直接同步yum源 如/etc/yum.repos.d/cloudera-cdh ...

  10. Singlton设计模式

    单例定义: 确保一个类只有一个实例,并提供全局访问点. 适用场景: 1.) 当系统中某个类必须仅有一个实例对象,同时访问该系统的所有访问者必须访问同一个实例对象时,且该对象实例自身占用资源又不大时. ...