请建议用于货币转换的API,它返回JSON或小尺寸html。 我使用http://www.google.com/finance/converter?a=1&from=RUB&to=USD返回11 kb的HTML。 我在我的iOS应用程序中使用它。
提前致谢!
答案 0 :(得分:17)
free.currencyconverterapi.com以JSON格式返回结果。
Web服务还支持JSONP。该API非常易于使用,它可以让您将一种货币转换为另一种货币。
免责声明,我是该网站的作者。
示例转换网址为:http://free.currencyconverterapi.com/api/v6/convert?q=USD_PHP&compact=ultra&apiKey=sample-api-key,它将返回json格式的值,例如: { “USD_PHP”:51.459999}
答案 1 :(得分:12)
正如评论中所述,此服务已于2013年11月关闭。
Google计算器API可以执行此操作;
请求:
http://www.google.com/ig/calculator?hl=en&q=100EUR=?USD
回应:
{lhs: "100 Euros",rhs: "145.67 U.S. dollars",error: "",icc: true}
答案 2 :(得分:11)
雅虎不再工作了。请参阅下面的评论
<击> Yahoo Finance Currency Converter 击>
<击> 此网址格式可用于获取不同格式的转化率。
http://download.finance.yahoo.com/d/quotes.csv?s=AUDUSD=X&f=nl1d1t1
用适当的格式和参数替换带有所需代码的quotes.csv
编辑:添加了示例网址格式
答案 3 :(得分:10)
现在iGoogle已经被淘汰,Alex K的解决方案不再令人遗憾。 在php中,这是一种替代方法,它以同样的方式工作,同样有效:
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$get = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency");
$get = explode("<span class=bld>",$get);
$get = explode("</span>",$get[1]);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get[0]);
答案 4 :(得分:8)
更新:Yahoo API不再有效了。留下这个遗留答案只是为了提供不再有效的信息。
使用yahoo api:
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDLTL%22)&format=json&env=store://datatables.org/alltableswithkeys&callback=
它将返回json格式,如:
{
query: {
count: 1,
created: "2013-12-04T13:52:53Z",
lang: "en-US",
results: {
rate: {
id: "USDLTL",
Name: "USD to LTL",
Rate: "2.5485",
Date: "12/4/2013",
Time: "8:52am",
Ask: "2.5486",
Bid: "2.5485"
}
}
}
}
现在在URL中查看USDLTL,只需更改为您需要的内容。
有时候费率太低,即使显示4个数字,你也看不到它:
评分:0.0006
不要惊慌只是做一个反转查询,翻转你的货币并做一些简单的数学运算。
e.g。你得到的利率是从KRW到0.0006欧元,但实际利率是0.00000125,所以再次询问API,只需翻转货币:从欧元到美元的比率是多少。然后你将得到像12500000.xxx这样的巨大数字,所以让数学得到你需要的比例:1/12500000你会得到比率= 0.00000125
希望有所帮助;)
P.S。解码后的URL更容易阅读,如下所示:
http://query.yahooapis.com/v1/public/yql
?q=select * from yahoo.finance.xchange where pair in ("USDLTL")
&format=json
&env=store://datatables.org/alltableswithkeys
&callback=
答案 5 :(得分:5)
我使用php-class转换货币汇率:
/**
* Yahoo currency rate import class
*
* @author Felix Geenen (http://www.geenen-it-systeme.de)
* @version 1.0.3
*/
class Yahoofinance
{
public static $_url = 'http://download.finance.yahoo.com/d/quotes.csv?s={{CURRENCY_FROM}}{{CURRENCY_TO}}=X&f=l1&e=.csv';
public static $_messages = array();
/*
* converts currency rates
*
* use ISO-4217 currency-codes like EUR and USD (http://en.wikipedia.org/wiki/ISO_4217)
*
* @param currencyFrom String base-currency
* @param currencyTo String currency that currencyFrom should be converted to
* @param retry int change it to 1 if you dont want the method to retry receiving data on errors
*/
public static function _convert($currencyFrom, $currencyTo, $retry=0)
{
$url = str_replace('{{CURRENCY_FROM}}', $currencyFrom, self::$_url);
$url = str_replace('{{CURRENCY_TO}}', $currencyTo, $url);
try {
$handle = fopen($url, "r");
if($handle !== false) {
$exchange_rate = fread($handle, 2000);
# there may be spaces or breaks
$exchange_rate = trim($exchange_rate);
$exchange_rate = (float) $exchange_rate;
fclose($handle);
if( !$exchange_rate ) {
echo 'Cannot retrieve rate from Yahoofinance';
return false;
}
return (float) $exchange_rate * 1.0; // change 1.0 to influence rate;
}
}
catch (Exception $e) {
if( $retry == 0 ) {
# retry receiving data
self::_convert($currencyFrom, $currencyTo, 1);
} else {
echo 'Cannot retrieve rate from Yahoofinance';
return false;
}
}
}
}
答案 6 :(得分:5)
以下是Felix Geenen对使用curl而不是fopen的回答的简单改编,因为很多服务器默认关闭fopen。
(我清理了一些代码并添加了一个减量值来重试。)
(还记得更新重试自我引用,具体取决于你将函数放入的范围,例如static ::或$ this-&gt;)
function convert($from, $to, $retry = 0)
{
$ch = curl_init("http://download.finance.yahoo.com/d/quotes.csv?s=$from$to=X&f=l1&e=.csv");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
$rate = curl_exec($ch);
curl_close($ch);
if ($rate) {
return (float)$rate;
} elseif ($retry > 0) {
return convert($from, $to, --$retry);
}
return false;
}
答案 7 :(得分:4)
我正在使用iGoogle,直到它刚刚开始,为我服务。
感谢Nerfair在回应上面的hobailey评论时的评论,这真是太棒了。我想我会在这里发布,所以你可以完全看到它是如何工作的!
以下是链接网址编码:http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance.xchange%20其中%20pair%20in%20%28%22USDCNY%22%29&amp; format = json&amp; env = store:/ /datatables.org/alltableswithkeys&callback =
超级好,只需更改货币对。谢谢Nerfair!