卷曲返回NULL为LinkedIn共享计数请求

时间:2014-12-03 19:51:33

标签: php curl share linkedin

我为我开发的Wordpress网站设置了一个插件,它使用CURL来获取各种社交网络的份额。

除了LinkedIn之外,它们似乎都运行良好 - 我使用以下代码来计算:

    $curl = curl_init();

    curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_URL => 'http://www.linkedin.com/countserv/count/share?url=' . $url . '&format=json'
    ));

    $response = curl_exec($curl);

    $results = json_decode($response);

    curl_close($curl);

    return $results->count;

奇怪的是,这在我的登台服务器上完美运行,但在现场,我什么都没收到。我把它作为服务器相关的东西,但是相同的代码适用于Facebook。

在我的登台服务器上,我必须将CURLOPT_FOLLOWLOCATION => true行添加到我的代码才能使其正常工作,但不幸的是它没有在实时服务器上修复它。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

首先确保通过urlencode运行网址。它会处理?#等特殊字符的问题。

您应该在curl_exec调用后添加类似于以下内容的错误处理代码,以便进行调试并在卷曲错误时提供回退。

if(curl_errno($curl))
{
    // do something sensible here
    echo 'error:' . curl_error($c);
}

答案 1 :(得分:0)

假设您在暂存和生产中为$url提供了相同的值:除了调试/错误处理和url编码之外,您的代码似乎很好。您应该检查实时网络上的传出代理或旧/ PHP / libcurl版本。

答案 2 :(得分:0)

我相信已经改进了LinkedIn SSL证书。

您需要将CURLOPT_SSL_VERIFYPEER设置为false,因此在您的例子中会是:

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_URL => 'http://www.linkedin.com/countserv/count/share?url=' . $url . '&format=json'
));

$response = curl_exec($curl);

$results = json_decode($response);

curl_close($curl);

return $results->count;

通常你会按如下方式设置:

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);