Нужен API для конвертации валюты

Обратитесь к API API для конвертации валют, который возвращает JSON или небольшой размер html. Я использую http://www.google.com/finance/converter?a=1&from=RUB&to=USD, который возвращает HTML 11 kb. Я использую его в своем приложении iOS.

Спасибо заранее!

Ответ 1

free.currencyconverterapi.com возвращает результаты в формате JSON.

Веб-сервис также поддерживает JSONP. API очень прост в использовании и позволяет конвертировать одну валюту в другую.

Отказ от ответственности, я автор сайта.

Образец конверсии URL: http://free.currencyconverterapi.com/api/v3/convert?q=USD_PHP&compact=ultra, который вернет значение в формате json, например. { "USD_PHP": 51.459999}

Ответ 2

Как упоминалось в комментариях, эта услуга была закрыта в ноябре 2013 года.

API-интерфейс Google Googles может сделать это:

Запрос:

http://www.google.com/ig/calculator?hl=en&q=100EUR=?USD

Ответ:

{lhs: "100 Euros",rhs: "145.67 U.S. dollars",error: "",icc: true}

(Дополнительная информация)

Ответ 3

Yahoo Finance Currency Converter.

Этот формат URL может использоваться для извлечения коэффициентов конверсии в разных форматах.

http://download.finance.yahoo.com/d/quotes.csv?s=AUDUSD=X&f=nl1d1t1

Замените quotes.csv соответствующим форматом и параметрами с необходимыми кодами

EDIT: Добавлены примеры форматов Url

Ответ 4

Теперь 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]);

Ответ 5

ОБНОВЛЕНИЕ: 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-адресе вы найдете URLLTL, так что просто измените то, что вам нужно.

Также когда-то скорость настолько низкая, что вы не видите ее даже с 4 номерами, которые она показывает:

Тариф: 0,0006

Не паникуйте, просто делайте запрос на разворот, переворачивайте свои валюты и делайте простую математику.

например. вы получили, что ставка составляет от KRW до EUR 0,0006, но реальная ставка - это что-то вроде 0,00000125, поэтому попробуйте API снова, просто переверните валюту: какое отношение составляет от EUR до USD. то вы получите огромное количество, например, 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=

Ответ 6

Я использую php-класс для конвертации курсов валют:

/**
 * 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;
            }
        }
    }
}

Ответ 7

Вот простая адаптация Felix Geenen для использования curl вместо fopen, так как многие серверы по умолчанию отключены.

(я очистил код и добавил значение декремента, чтобы повторить попытку.)

(Также не забудьте обновить саморегуляцию повтора в зависимости от области действия, в которую вы отбрасываете функцию, например, static:: или $this- > )

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;
}

Ответ 8

Я использовал iGoogle, пока он просто не потянулся вверх, не поможет мне.

Благодаря Nerfair tho в своем комментарии в ответ на комментарий hobailey выше, это работает УДИВИТЕЛЬНО. Я думал, что разместил его здесь, чтобы вы могли полностью понять, как это работает!

http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange где пара в ( "USDCNY" ) & формат = & JSON амп; ENV = магазин://datatables.org/alltableswithkeys& обратный вызов =

Вот ссылка URL: http://query.yahooapis.com/v1/public/yql?q=select%20 * %20% %20yahoo.finance.xchange %20where %20pair %20in %20% 28% 22USDCNY% 22% 29 & формат = & JSON амп; ENV = магазин://datatables.org/alltableswithkeys& обратный вызов =

Супер хорошо, просто измените валютную пару. Спасибо Nerfair!