通过Yahoo API 获取实时货币汇率

参考链接:http://raynix.info/archives/2216

上面链接是PHP写的,给的接口是 :http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=GBPCNY=x
可以复制粘贴到浏览器 会返回一个文件为 : quotes.csv
得到数据为:”GBPCNY=X”,9.5284,”2/10/2015”,”3:15am”
链接中的几个参数可以修改, “.csv” 可以换成 .html , .txt 等 改变返回文件类型,
其中 s= BGPCNY = x BGP(英镑) 为原始币种 CNY(人民币)为目标币种 可以动态替换 从而得到不同货币转换汇率, s= 和 =x 不能缺少。
将结果截取得到汇率的代码。

 public static String getCurrencyRate(String result) {
        String rate = null;
        String pointPrefix = "(\\-|\\+){0,1}\\d*\\.\\d+";
        String pointSuffix = "(\\-|\\+){0,1}\\d+\\.";
        if (result.isEmpty() || result == null) {
            rate = NUL;
        } else {
            String[] str = result.trim().split(",");
            for (int i = 0; i < str.length; i++) {
                if (str[i].matches(pointSuffix) || str[i].matches(pointPrefix)) {
                    rate = str[i];
                }
            }
        }
        return rate;
    }

除了Yahoo 的接口 还可以使用 : K780 API
参考链接 :http://www.k780.com/api/finance.rate
当然它也是来源于 Yahoo 财经
请求示例(Json)
http://api.k780.com:88/app=finance.rate&scur=EUR&tcur=CNY&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json
请求返回结果是json 格式字符串 :
{“success”:”1”,”result”:{“status”:”ALREADY”,”scur”:”EUR”,”tcur”:”CNY”,”ratenm”:”欧元/人民币”,”rate”:”7.063038”,”update”:”2015-02-11 16:01:17”}}
其中请求链接中 scur 为原始货币,tcur 为目标货币,appley 为使用API凭证,sign为登陆密文 ,format为返回类型 可选xml.
在java中请求URL 可以使用java .net 包 中的相关类 :

URL url = new URL(URLStr);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.setRequestProperty("User-Agent", "directclient");
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
            while ((inputLine = in.readLine()) != null) {
                backjsonBuffer.append(inputLine);
            }
            in.close();
            result = backjsonBuffer.toString();

通过json 解析的到相关 rate 值

对于以上两种方法, 经实践,

  • Yahoo 接口 请求 时间稍长,可能访问较多 会有拒绝访问情况。
  • K780 接口 相对较快,但限制请求次数 ,需要注册 。
    最近有在做获取汇率,特此记录,撰文不够严谨,如有其它好方法 希望不吝赐教。
    原文作者:道路修建问题
    原文地址: https://blog.csdn.net/ouyb_zou/article/details/43734979
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞