У меня есть класс
class exchange_rates{
var $currency = '"USDINR","TRYINR","SARINR","EURINR"';
var $url ;
var $handle;
var $result;
var $xml_index , $xml_val;
public function __construct(){
$this->url = 'http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ('.$this->currency.')&env=store://datatables.org/alltableswithkeys';
}
public function fetch_Currency (){
//echo $this->url ;
$this->handle = file_get_contents($this->url);
if ($this->handle) {
$this->result = fgets($this->handle, 4096);
$p = xml_parser_create();
xml_parse_into_struct($p, $this->result, $this->xml_val, $this->xml_index);
xml_parser_free($p);
fclose($this->handle);
}
}
public function get_exchange(){
echo "<pre>";
var_dump($this->xml_val);
echo "</pre>";
}
}
Я звоню в класс вот так
$obj = new exchange_rates();
$obj->fetch_Currency();
$obj->get_exchange();
Я получаю следующую ошибку
Warning: file_get_contents(http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ("USDINR","TRYINR","SARINR","EURINR")&env=store://datatables.org/alltableswithkeys): failed to open stream: HTTP request failed! HTTP/1.0 400 Unknown Version in C:\xampp\htdocs\ycc\currency_convertor.php on line 21
NULL
В основном я пытаюсь получить XML из URL. Если вы анализируете следующий URL
http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ("USDINR","TRYINR","SARINR","EURINR")&env=store://datatables.org/alltableswithkeys
Вы увидите результат XML, но через мой код я не могу скачать
Пожалуйста, помогите мне
Спасибо
Просто наткнулся на этот вопрос, когда я отлаживал тоже самое. Решением для меня было то, что вы должны были urlencode части запроса URL.
$query = 'select * from yahoo.finance.xchange where pair in ("USDINR","TRYINR","SARINR","EURINR")';
$request = 'http://query.yahooapis.com/v1/public/yql?q=' . urlencode($query) . '&env=store://datatables.org/alltableswithkeys';
$data = file_get_contents($request);
Надеюсь, это поможет кому-то!
Больше информации: https://developer.yahoo.com/php/howto-reqRestPhp.html
Других решений пока нет …