使用php获取curl中的Empty变量


Getting Empty variable in curl using php

我正在尝试使用Curl执行一个url,但我得到了空输出。

然而,如果我们在浏览器中复制粘贴相同的url,我们将获得值

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22YHOO%22,%22AAPL%22,%22GOOG%22,%22MSFT%22%29&env=http://datatables.org/alltables.env&format=json

然而,当我尝试使用Curl在php中获取值时,我得到的是Null

php代码

 <?php
$BASE_URL = "http://query.yahooapis.com/v1/public/yql"; 

    // Form YQL query and build URI to YQL Web service
    $yql_query = 'select * from yahoo.finance.quotes where symbol in ("YHOO","AAPL","GOOG","MSFT")&env=http://datatables.org/alltables.env';
    $yql_query_url = $BASE_URL . "?q=" .$yql_query. "&format=json";

    // Make call with cURL
    $session = curl_init($yql_query_url);
    curl_setopt($session, CURLOPT_RETURNTRANSFER,true);
    $json = curl_exec($session);

    echo "<pre>";
    print_r($json);exit;
?>

有什么建议吗??????

以下代码适用于我的

<?php
$BASE_URL = "http://query.yahooapis.com/v1/public/yql"; 
    $query = 'select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28"YHOO","AAPL","GOOG","MSFT"%29&env=http://datatables.org/alltables.env&format=json';
    echo $yql_query_url = $BASE_URL . "?q=" .$query;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$yql_query_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec ($ch);
    curl_close ($ch);
    print_r($content);
?>

查询必须正确编码。

检查

为此需要使用json_decode

检查手册-

http://php.net/manual/en/function.json-decode.php

现在检查这个工作代码——(至少在我这边工作)——

<?php
$yql_query_url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22YHOO%22,%22AAPL%22,%22GOOG%22,%22MSFT%22%29&env=http://datatables.org/alltables.env&format=json"; 
    // Make call with cURL
    $session = curl_init($yql_query_url);
    curl_setopt($session, CURLOPT_RETURNTRANSFER,true);
    $json = curl_exec($session);
$jsonnew=json_decode($json,true);
    echo "<pre>";
    print_r($jsonnew);
?>

我得到了错误。

在CURL 中使用Url之前,我必须使用"urlencode"函数对Url进行编码

而不是

$yql_query_url = $BASE_URL . "?q=" .$yql_query. "&format=json";

我必须使用

$yql_query_url = $BASE_URL . "?q=" .urlencode($yql_query). "&format=json";

它的工作原理:)lol