如何使用基本身份验证从HTTPS中file_get_contents?

时间:2016-12-21 18:02:23

标签: php authentication https file-get-contents basic-authentication

我有一些问题。我试图获取信息资源。在此之前,我需要基本身份验证。我在这里找到了一些解决方案,但它不起作用。

$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值' Europe / 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);

现在我没有任何错误消息。但我也没有任何结果。

1 个答案:

答案 0 :(得分:2)

我做到了。谢谢大家。我需要的一些端口在我的托管上关闭。所以也检查一下。

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