<?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..";
}
?>
它工作正常,但现在我在使用这段代码进行货币转换时遇到错误。
答案 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);