1

몇 가지 문제가 있습니다. 나는 정보 자원을 얻으려고 노력한다. 그리고 그 전에 기본 인증이 필요합니다. 여기 몇 가지 해결책을 찾았지만 작동하지 않습니다.기본 인증을 사용하여 HTTPS에서 file_get_contents하는 방법은 무엇입니까?

$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 값 '유럽/모스 코우', 우리가 시간대 'UTC'을 선택 스트림을 열지 못했습니다 :이 한 연결은 또한
에서 시간 초과 당분간은
-하지만 작동 할 수도 있습니다. 안 그래요?

HTTPS 연결에 문제가있을 수 있습니다. API가있는 곳을 지원하고 URL, 로그인 및 암호 만 알려주세요. 그리고 그들은 "기본 인증 만하면됩니다"라고 말했습니다.

내가 처음으로 노력할 때 중요한 것을 놓친 것 같습니다. 도와 주시면 감사하겠습니다.

P. 미안 내 영어

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'로 신뢰할 수 없다는 것을 발견했습니다. [컬] (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);