实施雅虎货币转换器时出错

时间:2014-06-24 11:00:56

标签: php

<?php   error_reporting(0); 
    $currency_code = $_GET['currency_code'];    
    $currency_opt = strtoupper($currency_code)."INR";   
    $jsn_response = file_get_contents('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22' .$currency_opt. '%22%29&format=json&env=store://datatables.org/alltableswithkeys&callback='); 

    $currencyrate_arr = json_decode($jsn_response, true);

    $currency_rate = $currencyrate_arr['query']['results']['rate']['Rate']; 
    //var_dump($currency_rate);
    if($currency_rate > 0){     
        echo $currency_text = $currency_rate;   
    }
    else{       
        echo $currency_text = "SORRY! ERROR..";     
    }
?>

它工作正常,但现在我在使用这段代码进行货币转换时遇到错误。

1 个答案:

答案 0 :(得分:0)

该脚本对我有用,并产生正确的结果。

如果您收到错误,可能是因为服务器配置或API限制。

您可以查看https://developer.yahoo.com/yql/faq/

  

YQL中的费率限制取决于您的身份验证。如果您使用基于IP的身份验证,则限制为公共YQL Web服务URL(/ v1 / public / *)的2,000个呼叫/小时/ IP

如果您需要超过每小时2000次通话限制,请阅读以上链接以获取更多信息。

PS:如果要调试,请设置:

error_reporting(E_ALL);
ini_set('display_errors', 1);

修改:由于allow_url_fopen已停用,因此您无法在外部网址上使用file_get_contents,但您仍然可以使用CURL。

所以只需将file_get_contents替换为:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22' .$currency_opt. '%22%29&format=json&env=store://datatables.org/alltableswithkeys&callback=');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$jsn_response = curl_exec($ch);
curl_close($ch);