获取实时汇率代码片段

获取实时汇率

通过yahoo 基金提供的url ,可查询实时汇率,例如

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20("USDCNY",%20"USDHKD")&env=store://datatables.org/alltableswithkeys&format=json

查询返回json如下:

{"query":{"count":2,"created":"2014-12-31T08:22:04Z","lang":"zh-CN","results":{"rate":[{"id":"USDCNY","Name":"USD to CNY","Rate":"6.1983","Date":"12/31/2014","Time":"3:22am","Ask":"6.1992","Bid":"6.1975"},{"id":"USDHKD","Name":"USD to HKD","Rate":"7.7552","Date":"12/31/2014","Time":"3:22am","Ask":"7.7554","Bid":"7.755"}]}}}

 查询其他币种只需要改变下查询条件即可。

查询其他币种到美元的代码如下:

public RateInfo getRate(final CurrencyCodeEnum currency) throws Exception {
		
		logger.info("--通过YQL到yahoo抓取实时汇率--");
		
		final RateInfo rateInfo = new RateInfo();
		try {
			Parser parser=new Parser();
			
			StringBuffer yqlUrl = new StringBuffer("http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in (\"");
			yqlUrl.append(StringUtils.upperCase(currency.toString())).append("USD");
			yqlUrl.append("\")&env=store://datatables.org/alltableswithkeys&format=json");
			parser.setURL(yqlUrl.toString());
			parser.parse(new NodeFilter() {
				
				/** Comment for <code>serialVersionUID</code> */
				private static final long serialVersionUID = 1L;

				@Override
				public boolean accept(Node arg0) {
					JSONObject obj = (JSONObject)JSONArray.parse(arg0.toHtml());
					JSONObject query =obj.getJSONObject("query");
					JSONObject results =query.getJSONObject("results");
					Assert.notNull(results);
					JSONObject rate =	results.getJSONObject("rate");
					Assert.notNull(rate);
					rateInfo.setCurrencyName(currency.toString());
					rateInfo.setBuyRate(rate.getString("Rate"));
					SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
					try {
						rateInfo.setPubTime(format.parse(rate.getString("Date")));
					} catch (ParseException e) {
						e.printStackTrace();
					}
					return false;
				}
			});
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		logger.info("--通过YQL到yahoo抓取实时汇率,返回汇率:{}--", rateInfo);
		
		return rateInfo;
		
	}

 

 

参考http://stackoverflow.com/questions/3139879/how-do-i-get-currency-exchange-rates-via-an-api-such-as-google-finance

 

<option value="AED">United Arab Emirates Dirham (AED)</option> <option value="ANG">Netherlands Antillean Guilder (ANG)</option> <option value="ARS">Argentine Peso (ARS)</option> <option value="AUD">Australian Dollar (AUD)</option> <option value="BDT">Bangladeshi Taka (BDT)</option> <option value="BGN">Bulgarian Lev (BGN)</option> <option value="BHD">Bahraini Dinar (BHD)</option> <option value="BND">Brunei Dollar (BND)</option> <option value="BOB">Bolivian Boliviano (BOB)</option> <option value="BRL">Brazilian Real (BRL)</option> <option value="BWP">Botswanan Pula (BWP)</option> <option value="CAD">Canadian Dollar (CAD)</option> <option value="CHF">Swiss Franc (CHF)</option> <option value="CLP">Chilean Peso (CLP)</option> <option value="CNY">Chinese Yuan (CNY)</option> <option value="COP">Colombian Peso (COP)</option> <option value="CRC">Costa Rican Colón (CRC)</option> <option value="CZK">Czech Republic Koruna (CZK)</option> <option value="DKK">Danish Krone (DKK)</option> <option value="DOP">Dominican Peso (DOP)</option> <option value="DZD">Algerian Dinar (DZD)</option> <option value="EEK">Estonian Kroon (EEK)</option> <option value="EGP">Egyptian Pound (EGP)</option> <option value="EUR">Euro (EUR)</option> <option value="FJD">Fijian Dollar (FJD)</option> <option value="GBP">British Pound Sterling (GBP)</option> <option value="HKD">Hong Kong Dollar (HKD)</option> <option value="HNL">Honduran Lempira (HNL)</option> <option value="HRK">Croatian Kuna (HRK)</option> <option value="HUF">Hungarian Forint (HUF)</option> <option value="IDR">Indonesian Rupiah (IDR)</option> <option value="ILS">Israeli New Sheqel (ILS)</option> <option value="INR">Indian Rupee (INR)</option> <option value="JMD">Jamaican Dollar (JMD)</option> <option value="JOD">Jordanian Dinar (JOD)</option> <option value="JPY">Japanese Yen (JPY)</option> <option value="KES">Kenyan Shilling (KES)</option> <option value="KRW">South Korean Won (KRW)</option> <option value="KWD">Kuwaiti Dinar (KWD)</option> <option value="KYD">Cayman Islands Dollar (KYD)</option> <option value="KZT">Kazakhstani Tenge (KZT)</option> <option value="LBP">Lebanese Pound (LBP)</option> <option value="LKR">Sri Lankan Rupee (LKR)</option> <option value="LTL">Lithuanian Litas (LTL)</option> <option value="LVL">Latvian Lats (LVL)</option> <option value="MAD">Moroccan Dirham (MAD)</option> <option value="MDL">Moldovan Leu (MDL)</option> <option value="MKD">Macedonian Denar (MKD)</option> <option value="MUR">Mauritian Rupee (MUR)</option> <option value="MVR">Maldivian Rufiyaa (MVR)</option> <option value="MXN">Mexican Peso (MXN)</option> <option value="MYR">Malaysian Ringgit (MYR)</option> <option value="NAD">Namibian Dollar (NAD)</option> <option value="NGN">Nigerian Naira (NGN)</option> <option value="NIO">Nicaraguan Córdoba (NIO)</option> <option value="NOK">Norwegian Krone (NOK)</option> <option value="NPR">Nepalese Rupee (NPR)</option> <option value="NZD">New Zealand Dollar (NZD)</option> <option value="OMR">Omani Rial (OMR)</option> <option value="PEN">Peruvian Nuevo Sol (PEN)</option> <option value="PGK">Papua New Guinean Kina (PGK)</option> <option value="PHP">Philippine Peso (PHP)</option> <option value="PKR">Pakistani Rupee (PKR)</option> <option value="PLN">Polish Zloty (PLN)</option> <option value="PYG">Paraguayan Guarani (PYG)</option> <option value="QAR">Qatari Rial (QAR)</option> <option value="RON">Romanian Leu (RON)</option> <option value="RSD">Serbian Dinar (RSD)</option> <option value="RUB">Russian Ruble (RUB)</option> <option value="SAR">Saudi Riyal (SAR)</option> <option value="SCR">Seychellois Rupee (SCR)</option> <option value="SEK">Swedish Krona (SEK)</option> <option value="SGD">Singapore Dollar (SGD)</option> <option value="SKK">Slovak Koruna (SKK)</option> <option value="SLL">Sierra Leonean Leone (SLL)</option>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值