2014-01-22 106 views
2

這工作在bash直接罰款:PHP捲曲的REST API不工作

curl https://test.url.com/api/id/98765 -H 'API_KEY: xxxxxxxxxx' -H 'Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==' 

這並不在PHP中工作(不返回任何):返回

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL,'https://test.url.com/api/id/98765'); 
curl_setopt($curl, CURLOPT_HEADER, 1); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
              "API_KEY: xxxxxxxxxx8", 
              "Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==" 
              ));   
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
$results = curl_exec($curl); 
echo 'out: '.$results; 

沒有錯誤。我期待的結果JSON

+0

@ user2029890你的錯誤報告是否爲ON? –

+0

是的,錯誤報告已打開。我通過故意創建了一個語法錯誤 – user2029890

+0

Blat!沒關係,現在我看到你在CURL中工作。 \ *深入挖掘\ * – brandonscript

回答

2

Hazarding猜測(我們最終確定這是真的),您需要:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 

(注意:0是代名詞false)。

這會阻止客戶端驗證遠程位置的SSL證書。我之所以這麼建議是因爲你的網址在https://上,但它看起來像一個定製的解決方案,你可能沒有爲它配置公共可信證書。

有關CURLOPT_SSL_VERIFYPEER的更多信息,請登錄the php docs

0

下面的PHP代碼對我來說是很好的一個着名的API。在這裏我必須實現CURLOPT_SSL_VERIFYPEER和CURLOPT_USERAGENT。你可以試試這個

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "https://testurl.com/"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 15); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 

$result = curl_exec($ch); 
curl_close($ch);