1

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;

?>

なにか提案を ??????

4

3 に答える 3

2

これに使用する必要があります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);

?>
于 2012-09-05T11:14:24.850 に答える
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);
?>

クエリは適切にエンコードされている必要があります。

確認してください

于 2012-09-05T11:35:07.330 に答える
0

エラーが発生しました。

CURLで使用する前に、「urlencode」関数を使用してUrlをエンコードする必要があります

すなわち

それ以外の

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

私は使用する必要があります

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

そしてそれは動作します:)笑

于 2012-09-05T13:52:40.237 に答える