最简单的方法是准备一个静态转换器,负责返回预组装列表,它将返回(发送给您)Yahoo API 查询字符串。
一个简单的模型示例是:
string sendMeTheYahooApiQuerySTRING( const string aCurrency1 = "USD",
bool &ErrorFLAG = True
){
switch( aCurrency1 ){
case "USD": ErrorFLAG = False; return( "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ( "USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", "USDAUD", "USDBRL", "USDCAD", "USDCNY", "USDHKD", "USDIDR", "USDILS", "USDINR", "USDKRW", "USDMXN", "USDMYR", "USDNZD", "USDPHP", "USDSGD", "USDTHB", "USDZAR", "USDISK" )&env=store://datatables.org/alltableswithkeys" );
case "GBP": ErrorFLAG = False; return( "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ( "GBPEUR", "GBPJPY", "GBPBGN", "GBPCZK", "GBPDKK", "USDGBP", ... )&env=store://datatables.org/alltableswithkeys" );
case "JPY": ErrorFLAG = False; return( "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ( "GBPJPY", "JPYBGN", ... )&env=store://datatables.org/alltableswithkeys" );
case ... : ErrorFLAG = False; return( ... );
case default: return( "" );
}
设计以便以后使用它:
bool anErrorFLAG = False;
...
string aQuerySTRING = sendMeTheYahooApiQuerySTRING( "DKK", anErrorFLAG );
assert( !anErrorFLAG );
...
这种方法依赖于 Y! 边处理,详见 API 规范:
<execute>
var pairs = [];
for each (var p in pair.toString().replace(/\s+/g,'').split(','))
pairs.push(p.toUpperCase() + '=X');
var q = "select * from csv where url='http://download.finance.yahoo.com/d/quotes.csv?s="+ pairs.join(',') +
"&f=snl1d1t1ab'" + " and columns='Symbol,Name,Rate,Date,Time,Ask,Bid'",
results = y.query(q),
rates = <rates/>,
rows=results.results.row;
for each (var row in rows) {
for each (var item in row.*)
row[item.localName()]=item.text().toString().replace(/"/g, '');
var tag = row.Symbol.text().toString().substr(0,6);
delete row.Symbol;
rates.rate += <rate id={tag}>{row.*}</rate>;
}
response.object = rates;
</execute>
另一种方法是构建一组重用 Y 的直接访问迭代器!直接访问查询语法,用于为每个相应的货币对返回单个 csv 记录,不带 Y!将结果聚合到一个公共容器中:
http://download.finance.yahoo.com/d/quotes.csv?s=GBPJPY=X&f=snl1
它返回的简单数据如下:
"GBPJPY=X","GBP/JPY",146.7220
没有Y!方重新包装个别汇率。