1

У меня есть некоторые проблемы. Я пытаюсь получить информационный ресурс. И перед этим мне нужна базовая аутентификация. Я нашел здесь некоторое решение, но оно не работает.Как file_get_contents от HTTPS с базовой аутентификацией?

$username = "username"; 
$password = "password"; 
$url = "https://sapi.website.ru:3443/services/"; 

//GetCountries 
$urlCountries = $url."?action=GetCountries"; 
$remote_url = $urlCountries; 

$opts = array(
    'http' => array(
     'method' => "GET", 
     'header' => "Authorization: Basic ".base64_encode("$username:$password"), 
     'timeout' => 60    
    ) 
); 
$context = stream_context_create($opts); 
$file = file_get_contents($remote_url, false, $context); 

print($file); 

Ошибка: не удалось открыть поток: Тайм-аут соединения в
Также я это: file_get_contents(): Недопустимое значение date.timezone 'Европа/Moskow', мы выбрали часовой пояс 'UTC' на данный момент - но он может с ним работать. Или нет?

Возможно, проблема связана с HTTPS-соединением. Поддержка, где у меня есть API, дайте мне только URL-адрес, логин и пароль. И они сказали: «Вам просто нужна базовая аутентификация».

Это мой первый раз, когда я пытаюсь работать с ним, и, возможно, мне не хватает чего-то важного. Надеюсь, вы можете мне помочь.

P.S. Извините за мой английский

UPD Я пытался сделать так:

$headers = array(
    'Content-Type: application/xml', 
    "Authorization: Basic ".base64_encode("$username:$password") 
); 

$process = curl_init($urlCountries); 
curl_setopt($process, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($process, CURLOPT_HEADER, 1); 
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password); 
curl_setopt($process, CURLOPT_TIMEOUT, 30); 
curl_setopt($process, CURLOPT_POST, 1); 
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE); 
$return = curl_exec($process); 
curl_close($process); 

print_r($return); 

Теперь у меня нет никаких сообщений об ошибках. Но и у меня нет никаких результатов.

+0

Я нашел функции 'file_get_contents()' и 'stream_' ненадежными с' https'. Считаете ли вы использование [curl] (http://stackoverflow.com/questions/2140419/how-do-i-make-a-request-using-http-basic-authentication-with-php-curl)? – GentlemanMax

+0

Я пробовал. UPD мой вопрос. Теперь у меня нет сообщений об ошибках. Но и у меня нет никаких результатов. –

ответ

1

Я сделал это. Спасибо всем. Некоторые порты, которые мне нужны, были закрыты на моем хостинге. Так что также проверьте это.

$user = 'username'; 
$pass = 'password'; 

    $url = 'url'; 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_USERPWD,"$user:$pass"); 
    curl_setopt($ch, CURLOPT_HTTPGET, 1); 

    $exec = curl_exec($ch); 

    curl_close($ch);