2016-02-18 15 views
0

Я пытаюсь преобразовать найденный код cURL here в первом примере кода. Вот локонов они дают мне:Преобразование команды cURL в php cUrl

curl -X GET -H "Content-type: application/json" -d '{"api_key":"zUYwqLqwTqpyJ2bA7osy"}' https://statushub.io/api/status_pages 

Вот то, что я до сих пор, и он не работает:

<?php 
#$cmd= 'curl -X GET -H "Content-type: application/json" -d \'{"api_key":"a991d51f4f7ea269ccfbfa68621b3aa3"}\' https://statushub.io/api/status_pages'; 
#exec($cmd,$result); 
#echo gettype($result), "\n"; 
#echo print_r(curl_exec($cmd)); 

$ch = curl_init('https://statushub.io/api/status_pages'); 

curl_setopt($ch, CURLOPT_HTTPHEADER, 'Content-type: application/json'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"api_key":"a991d51f4f7ea269ccfbfa68621b3aa3"}'); 
#curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

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

echo (string)$test; 

if(curl_exec($ch) === false) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
else 
{ 
    echo 'Operation completed without any errors'; 
} 

echo "<pre>"; 
print_r($test); 
echo "</pre>"; 
?> 

Я включил некоторые другие попытки с линиями закодированных вне. Я попытался взглянуть на документацию php cURL, но я не могу понять это.

Заранее спасибо.

+0

Вам может понадобиться варианты Ssl и return transfer possible – Rasclatt

ответ

1

Следующая прямая трансляция локонов команды, единственное существенное различие я замечаю, что заголовки в массиве и установив CURLOPT_CUSTOMREQUEST в GET:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "https://statushub.io/api/status_pages"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"api_key":"zUYwqLqwTqpyJ2bA7osy"}'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 

$headers = array(); 
$headers[] = "Content-Type: application/json"; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

$test = curl_exec($ch); 
if (curl_errno($ch)) { 
    echo 'Error:' . curl_error($ch); 
} 
curl_close ($ch); 

echo "<pre>"; 
print_r($test); 
echo "</pre>"; 
+0

Спасибо, что на самом деле получил от меня ответ. Однако он говорит: «Ошибка: сбой подключения к statushub.io:443; нет маршрута к хосту». Я обновил ключ api, так как у меня есть другой. Если я запустил его в команде cURL, я получу правильный ответ. Любые идеи? – Loaf

+0

Я пробовал настройку, проверяя pere и host на false/0, но это не сработало. Я также читал, что это плохая безопасность. Я попытался скрыть сертификат и предоставить его через CAINFO, но та же ошибка появляется – Loaf

+1

«Нет маршрута к хосту» - это ошибка сетевого подключения, а не SSL. Если вы можете подключиться из командной строки, это может быть проблема с прокси-сервером или что-то более сложное. [Этот ответ] (http://stackoverflow.com/a/29783772/628267) предлагает добавить 'curl_setopt ($ curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);' для решения проблем IPv6. –

Смежные вопросы