1

CURL と json_decode を使用して PHP 配列に変換する必要がある json スクリプトがあります。CURL ビットは、関数を介して実行されます。私の $getcontent にはデータがありますが、それを json_decode に渡すと、$content は空になります。

空の文字列を返すだけです。

PHP

$url='http://lab.volzy.dk/index.json';
$getcontent = get_data($url);

$content = json_decode($getcontent, true);

if(empty($getcontent)) {
echo "getcontent empty";
} else {
echo "getcontent not empty";
}

if(empty($content)) {
echo "content empty";
} else {
echo "content not empty";
}

function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

URL からデータをコピーして一重引用符で囲むと、データを受け取りますが、URL からデータを取得しようとしても何も得られません。

これを修正する方法についての手がかりを持っている人はいますか?

4

2 に答える 2

1

あなたのスクリプトは正常に動作します。それは $timeout でしょうか? 高く設定してみてください ( 15 )。

function get_data($url)
{
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}


$url='http://lab.volzy.dk/index.json';
$getcontent = get_data($url);


$content = json_decode($getcontent, true);

var_dump($content);

素敵な json オブジェクトを取得します。

于 2012-07-04T14:28:06.053 に答える
0

http リクエストは特別なものではないようです。そのため、curl は必要ありません。get_data() を file_get_contents('http://lab.volzy.dk/index.json'); に置き換えてみてください。

于 2012-07-04T14:37:29.843 に答える