2012-09-05 42 views
1

我正在嘗試使用Curl執行一個url,並且我正在獲取空輸出。使用php在捲曲中獲得空變量使用php

但是,如果我們複製粘貼到瀏覽器相同的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值當我嘗試同樣的,我得到空

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; 

?> 

任何建議??????

+1

檢查[curl_error]的輸出(http://www.php.net/manual/en/function.curl-error.php)。 – Sjoerd

+0

當你發佈時請仔細檢查問題。當您發佈此代碼時,我們無法看到完整的代碼。 –

回答

1

下面的代碼是爲我工作

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

查詢必須正確編碼。

檢查它

+0

THANKS哥們:) – shail

2

您需要使用json_decode這一點。

檢查手冊 -

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

檢查現在這個工作的代碼 - (工作ATLEAST我結束) -

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

?> 
+0

print_r($ json); exit; 這是空 – shail

+0

@shail實際上你提到的,所以你需要實際解碼data..check我剛剛發佈 – swapnesh

+0

自變量的鏈接獲取JSON格式數據的URL「$ JSON」的isEmpty,是沒有用的json_decode – shail

0

我得到了錯誤。

我必須使用 「進行urlencode」 功能,使用它在捲曲之前,編碼地址

,而不是

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

我不得不使用

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

和它的工作:)大聲笑