代码之家  ›  专栏  ›  技术社区  ›  Abilash Erikson

从php中的url获取数据在localhost中不起作用

  •  1
  • Abilash Erikson  · 技术社区  · 6 年前

    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”

    注意:正在尝试获取中非对象的属性“date” C:\xampp\htdocs文件\测试.php第10行

    注意:正在尝试获取中非对象的属性'xauPrice'


    从金价.org我们得到的是黄金->美元->盎司=1275.67。这个价值 我们使用上面的代码输出。但我需要黄金->美元->g=41.01 . 请检查金价.org你会明白的

    2 回复  |  直到 6 年前
        1
  •  3
  •   Andrei Lupuleasa    6 年前

    使用此选项:

    $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
  •  2
  •   Rakesh Jakhar    6 年前

    您可以将响应转换为数组并访问所需的元素

    $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
                )
    
        )
    
    )
    
        3
  •  1
  •   RyanNerd    6 年前

    <?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;
    
        4
  •  1
  •   Sabir Kharodiya    6 年前

    使用此选项:

    $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);