2013-08-20 88 views
0

您好我正在尝试使用此网址从维基百科进行此api调用,但它说它是空的时,我转储该变量。这个函数适用于我的其他json api调用,但不适用于此,我手动在broswer中测试它,它给了我一个结果。这是我尝试JSON解码卷曲问题

$url = 'http://en.wikipedia.org/w/api.php?action=query&format=json&titles=Image:Romerolagus diazi (dispale) 001.jpg&prop=imageinfo&iiprop=url'; 

$result = apicall($url); 
var_dump($result);  

function apicall($url){ 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'MyBot/1.0 (http://www.mysite.com/)'); 

    $result = curl_exec($ch); 

    if (!$result) { 
    exit('cURL Error: '.curl_error($ch)); 
    } 

    $var = json_decode($result); 


    return $var; 

} 
+0

什么 “不工作” 是什么意思?它输出“我不工作”或什么? – zerkms

回答

1

urlencode()问题,修改这样

<?php 
$url = 'http://en.wikipedia.org/w/api.php'; 
$titles = urlencode('Image:Romerolagus diazi (dispale) 001.jpg'); 
$queryStr = 'action=query&format=json&titles='.$titles.'&prop=imageinfo&iiprop=url'; 
$url = $url . '?' . $queryStr; 

$result = apicall($url); 
var_dump($result);  

function apicall($url){ 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22'); 

    $result = curl_exec($ch); 

    if (!$result) { 
    exit('cURL Error: '.curl_error($ch)); 
    } 

    var_dump($result); 
    $var = json_decode($result); 


    return $var; 

} 
0

您应该考虑使用http_build_query()建立的网址:

$url = 'http://en.wikipedia.org/w/api.php?' . http_build_query(array(
    'action' => 'query', 
    'format' => 'json', 
    'titles' => 'Image:Romerolagus diazi (dispale) 001.jpg', 
    'prop' => 'imageinfo', 
    'iiprop' => 'url', 
));