在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;}
}

转载于:https://www.cnblogs.com/rongguang/p/4819195.html

FastJson之有道翻译相关推荐

  1. java有道_java实现有道翻译爬虫

    我的博文地址 使用的库 1.commons-codec 主要是为了加密,可以直接用java原生的,这里偷懒了,有点大才小用的感觉. 2.requests-5.0.7 大佬写的java 类似python ...

  2. 【青少年编程】黄羽恒:翻译小工具 -- 利用有道翻译

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  3. 【Python】有道翻译的爬虫实现(后篇)

    前面说到,有道翻译和百度翻译不同 (百度翻译是模拟iPhone手机,可能百度翻译用Pc端也会有类似的问题,有道翻译的User-Agent是Pc端) 每一次的salt和sign都不一样,这是什么原因产生 ...

  4. 有道翻译蛋的进阶:丁磊为其加冕称“王”

    作者 | Just 从一代的"翻译蛋",然后改名为"有道翻译王",丁磊亲自为其"加冕". 由"蛋"成"王&qu ...

  5. Python爬虫破解有道翻译

    有道翻译是以异步方式实现数据加载的,要实现对此类网站的数据抓取,其过程相对繁琐,本节我以有道翻译为例进行详细讲解. 通过控制台抓包,我们得知了 POST 请求的参数以及相应的参数值,如下所示: 图1: ...

  6. Python 编写一个有道翻译的 workflow 教程

    最近使用有道翻译的 workflow 总是翻译不了,可能是 appKey 失效了或者超过调用上限,所以打算自己实现一个. 创建 workflow 打开 Alfred3 的 Preferences,选择 ...

  7. (未完成...)Python3网络爬虫(2):利用urllib.urlopen向有道翻译发送数据并获得翻译结果...

    环境: 火狐浏览器 pycharm2017.3.3 python3.5 1.url不仅可以是一个字符串,例如:http://www.baidu.com.url也可以是一个Request对象,这就需要我 ...

  8. python有道自动翻译_Python 调用有道翻译接口实现翻译

    最近为了熟悉一下 js 用有道翻译练了一下手,写一篇博客记录一下,也希望能对大家有所启迪,不过这些网站更新太快,可能大家尝试的时候会有所不同. 首先来看一下网页 post 过去的数据 大家不难发现,我 ...

  9. 有道python网课怎么样-如何用python“优雅的”调用有道翻译?

    前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...

最新文章

  1. 在centos6.4下安装python3.5
  2. 黑马程序员——集合框架(二)
  3. 模块--random
  4. ssl提高组周六模拟赛【2018.9.15】
  5. moxy json介绍_使用MOXy 2.5.1快速且有点脏的JSON模式生成
  6. 事件映射 消息映射_映射幻影收费站
  7. v8go 库手动编译 v8 golang 库手动编译
  8. 20200604每日一句
  9. 编写函数计算正方体体积
  10. 常用的公共数据集(二)
  11. digester java_JAVA Digester 简介
  12. uniapp 如何打通消息推送-华为
  13. [ubuntn]常用软件安装方法
  14. 遗传算法流程概述与简单实例认知
  15. 【学习笔记】AGC009/AGC019/AGC029/AGC035
  16. ios-弹窗输入六位密码
  17. vue的provide的使用
  18. 设置U盘盘符为自定义图片
  19. 2021乌镇互联网大会,数字联盟解读网络安全与信息保护
  20. 神经网络—卷积神经网络CNN

热门文章

  1. rwkj 1359 友元:两点距离
  2. MonkeyRunner——如何在实体机上启动一个程序
  3. 浅析epoll-为何多路复用I/O要使用epoll
  4. 5.6 date:显示与设置系统时间
  5. linux asm 磁盘管理,asm磁盘管理篇
  6. mysql 创建用户权限_10.创建 MySQL 用户及赋予用户权限
  7. trados怎么导出html,【转】Trados 基本知识、使用技巧与经验
  8. java 短链跳转原理_给你代码:短链接生成原理
  9. 小于n与n互质的所有数的和(欧拉函数+快速幂)
  10. 居然之家:核心业务系统全面上云,采用PolarDB替代传统商业数据库