2014-12-03 27 views
1

我爲我開發的Wordpress網站設置了一個插件,它使用CURL獲取各種社交網絡的共享計數。Curl爲LinkedIn共享計數請求返回NULL

他們似乎都來自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行添加到我的代碼才能使其正常工作,但不幸的是,它並未在現場服務器上修復它。

任何想法?

+0

嘗試在bash執行COMAND ... curl --request GET'your url' – Gregsparrow 2015-01-11 10:42:58

+0

LinkedIn可以阻止Curl請求(阻止殭屍程序)嗎?嘗試設置模仿常規瀏覽器的自定義捲曲標題。 – FeedTheWeb 2015-01-17 17:49:19

+0

我目前有這個問題 - 這是由於您的網址中的&字符和任何其他非文字字符。如果你在瀏覽器中測試你的URL,它會起作用,但用&替換&,你會從鏈接In中得到一個java.lang.NullPointerException 500錯誤。看起來Linked In不再希望我們在使用API​​時正確編碼我們的URL。 – 2015-01-23 15:31:34

回答

0

首先確保URL通過urlencode運行。它會處理特殊字符如?#的問題。

在調用curl_exec調用後,您應該添加與以下內容類似的錯誤處理代碼,以便在調試時提供回退,並在curl錯誤退出時提供回退。

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

假設你$url兩個臨時和生產提供相同的價值:你的代碼似乎除了調試/錯誤處理和URL編碼的罰款。您應該檢查您的實時網絡上的傳出代理或破損/舊的PHP/libcurl版本。

0

我相信已經對linkedIn SSL證書進行了修改。

您需要設置CURLOPT_SSL_VERIFYPEERfalse,所以在你〔實施例,這將是:

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