Получить данные из URL в php не работает в localhost - PullRequest
2 голосов
/ 19 апреля 2019

Я хочу получить данные с URL https://data -asg.goldprice.org / dbXRates / USD

поэтому я пишу следующий код

$curlSession = curl_init();
curl_setopt($curlSession, CURLOPT_URL, 'https://data-asg.goldprice.org/dbXRates/USD');
curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);

$jsonData = json_decode(curl_exec($curlSession));

$item =  $jsonData->items;
$date =  $jsonData->date;
$gold_price = $item[0]->xauPrice;
echo "Gold price on ".$date." is ".$gold_price;
  curl_close($curlSession);

Но по какой-то причине это не работает. Пожалуйста, проверьте

Примечание: попытка получить свойство 'items' необъекта в C: \ xampp \ htdocs \ test.php в строке 9

Примечание: попытка получить свойство 'date' необъекта в C: \ xampp \ htdocs \ test.php в строке 10

Примечание: попытка получить свойство 'xauPrice' необъекта в C: \ xampp \ htdocs \ test.php в строке 11


с goldprice.org мы получаем золото-> USD-> OZ = 1275.67. Это значение мы выводим с использованием приведенного выше кода. Но мне нужно золото-> USD-> g = 41.01 , Пожалуйста, проверьте goldprice.org вы поймете

Ответы [ 4 ]

3 голосов
/ 19 апреля 2019

Используйте это:

$curlSession = curl_init();
curl_setopt($curlSession, CURLOPT_URL, 'https://data-asg.goldprice.org/dbXRates/USD');
curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($curlSession);
$jsonData = json_decode($output);
var_dump($jsonData);
$item =  $jsonData->items;
$date =  $jsonData->date;
$gold_price = $item[0]->xauPrice;
echo "Gold price on ".$date." is ".$gold_price;
curl_close($curlSession);

У вас нет:

curl_setopt($curlSession, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, 0);
2 голосов
/ 19 апреля 2019

Вы можете преобразовать свой ответ в массив и получить доступ к нужному элементу

$jsonData = json_decode(curl_exec($curlSession));

заменить на

$jsonData = json_decode(curl_exec($curlSession), true);

Параметр true преобразует объект в массив.

print_r($jsonData);

Array
(
 [ts] => 1555669932973
 [tsj] => 1555669926185
 [date] => Apr 19th 2019, 06:32:06 am NY
 [items] => Array
    (
        [0] => Array
            (
                [curr] => USD
                [xauPrice] => 1275.67
                [xagPrice] => 14.905
                [chgXau] => 3.77
                [chgXag] => -0.032
                [pcXau] => 0.2964
                [pcXag] => -0.2142
                [xauClose] => 1271.9
                [xagClose] => 14.937
            )

    )

)
1 голос
/ 19 апреля 2019

Используйте это:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://data-asg.goldprice.org/dbXRates/USD",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Cache-Control: no-cache",
    "Postman-Token: 67666a77-d99b-c8fb-f202-5ae0003cfe31"
  ),
));

$response = curl_exec($curl);
$res = json_decode($response);
echo $res->date.' ';
$price = $res->items;
echo $price[0]->xauPrice;
$err = curl_error($curl);
curl_close($curl);
1 голос
/ 19 апреля 2019

Попробуйте это:

<?php
$json = file_get_contents("https://data-asg.goldprice.org/dbXRates/USD");
$jsonData = json_decode($json);
$items = $jsonData->items;
$item = $items[0];
$date =  $jsonData->date;
$gold_price = $item->xauPrice;

echo "Gold price on ".$date." is ".$gold_price;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...