关于使用聚合数据汇率接口植入自己的程序问题
2018-01-27 14:22
411 查看
关于使用聚合数据汇率接口植入自己的程序问题
public static final String DEF_CHATSET = "UTF-8"; public static final int DEF_CONN_TIMEOUT = 30000; public static final int DEF_READ_TIMEOUT = 30000; public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; //配置您申请的KEY public static final String APPKEY ="**********************************"; /** * 1.常用汇率查询 */ public static void getRequestExchange(){ String result =null; String url ="http://op.juhe.cn/onebox/exchange/query";//请求接口地址 Map params = new HashMap();//请求参数 params.put("key",APPKEY);//应用APPKEY(应用详细页查询) try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); } } /** * 2.货币列表 * @return */ public static List<CurrencyBean> getRequestCurrencyList(){ List<CurrencyBean> list = null;//货币列表集合 String result =null; String url ="http://op.juhe.cn/onebox/exchange/list";//请求接口地址 String currencyList = null;//货币列表 Map params = new HashMap();//请求参数 params.put("key",APPKEY);//应用APPKEY(应用详细页查询) try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ //得到json格式的列表 currencyList = object.get("result").toString(); //截取字符串,得到集合json String currency = currencyList.substring(8, currencyList.length()-1); //字符串转换为json数组 JSONArray jsonArray = JSONArray.fromObject(currency); //json 转换为 Java集合 list = (List<CurrencyBean>) jsonArray.toList(jsonArray, CurrencyBean.class); }else{ list = null; } } catch (Exception e) { e.printStackTrace(); } return list; } /** * 3.实时汇率查询换算 * @param currency * @return */ public static String getRequestConversion(String currency){ String result =null; String url ="http://op.juhe.cn/onebox/exchange/currency";//请求接口地址 String multiple = null;//转换后得到的倍数 Map params = new HashMap();//请求参数 params.put("from","USD");//转换汇率前的货币代码 params.put("to",currency);//转换汇率成的货币代码 params.put("key",APPKEY);//应用APPKEY(应用详细页查询) try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result);//得到当前返回的结果 String str = object.get("result").toString();//根据键“result”得到值 JSONArray objArray = JSONArray.fromObject(str);//转换成JSON数组对象 multiple = (String) objArray.getJSONObject(0).get("result");//得到精确值 if(object.getInt("error_code")!=0){ multiple = null; } } catch (Exception e) { e.printStackTrace(); } return multiple; } public static void main(String[] args) { } /** * * @param strUrl 请求地址 * @param params 请求参数 * @param method 请求方法 * @return 网络请求字符串 * @throws Exception */ public static String net(String strUrl, Map params,String method) throws Exception { HttpURLConnection conn = null; BufferedReader reader = null; String rs = null; try { StringBuffer sb = new StringBuffer(); if(method==null || method.equals("GET")){ strUrl = strUrl+"?"+urlencode(params); } URL url = new URL(strUrl); conn = (HttpURLConnection) url.openConnection(); if(method==null || method.equals("GET")){ conn.setRequestMethod("GET"); }else{ conn.setRequestMethod("POST"); conn.setDoOutput(true); } conn.setRequestProperty("User-agent", userAgent); conn.setUseCaches(false); conn.setConnectTimeout(DEF_CONN_TIMEOUT); conn.setReadTimeout(DEF_READ_TIMEOUT); conn.setInstanceFollowRedirects(false); conn.connect(); if (params!= null && method.equals("POST")) { try { DataOutputStream out = new DataOutputStream(conn.g b9fb etOutputStream()); out.writeBytes(urlencode(params)); } catch (Exception e) { // TODO: handle exception } } InputStream is = conn.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET)); String strRead = null; while ((strRead = reader.readLine()) != null) { sb.append(strRead); } rs = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { reader.close(); } if (conn != null) { conn.disconnect(); } } return rs; } /** * 将map型转为请求参数型 * @param data * @return */ public static String urlencode(Map<String,Object>data) { StringBuilder sb = new StringBuilder(); for (Map.Entry i : data.entrySet()) { try { sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString(); }
注册聚合数据用户,免费使用一天只可调用100次,针对不是很平凡更新汇率的网站,我们可以将其导入自己的数据库,每天定时更新同步数据两次即可!影响不大!
相关文章推荐
- 关于接口使用getType的方法的问题
- 在WEB程序中使用.NET Remoting的IpcChannel时注意事项(关于“拒绝访问”问题的解决)
- 关于读不是自己写的程序的问题
- 关于使用DirectShow架构,传输YUV420数据的Filter与Video Renderer Filter连接问题的解决办法。
- 关于使用request.querystring提取中文数据的问题
- [错误记录]关于指针传递获得数据使用错误问题....
- 关于WEB标准中使用表格存放数据的问题和单元格背景的变色
- 关于android使用自己的sqlite库问题。
- 关于程序调用Sqlldr不出错但数据导入不成功的问题
- 关于使用Linq to sql作为数据交互时的架构问题
- 使用NSKeyedArchiver保存数据导致程序退出问题
- 关于在asp.net中使用showDialogModal方式输入数据中存在的问题
- 转:关于程序优化的问题 [根据某文件 自己总结下]
- 关于VB使用ActiveX.Exe创建多线程程序的奇怪问题
- 关于使用System.out.println()向控制台输出数据和使用out.println()向页面输出数据效率的问题
- 关于“此程序集中已使用了资源标识符 "Test.Searchn.resources”问题的解决办法
- 关于数据访问通用类库DBJICHENG使用上的问题!
- WinForm程序中使用在项目中内嵌mdf数据的问题
- 关于使用wse3.0客户机程序在某些机器上连接服务端奇慢的问题
- 关于怎么在vc++开发的程序中使用SkinMagic Toolkit的问题