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