Параметры HTTP-контекста изложены здесь: http://www.php.net/manual/en/context.http.php
Параметр header
является строкой, поэтому, как говорит @Mob, вы должны использовать \r\n
и объединение строк, а не массив.Тем не менее, user_agent
является допустимым ключом, так что вы можете просто использовать его вместо этого.
Я предполагаю, что содержимое переменной $auth
соответствует чему-то вроде Authorization: blah
- то есть стандартный заголовокформат?
Приведенный ниже код является рабочим примером.Обратите внимание, что я изменил ваш fpassthru()
(который выводит содержимое в браузер и не сохраняет его в $result
) на цикл fread()
.В качестве альтернативы вы могли бы обернуть fpassthru()
вызов ob_start();
и $result = ob_get_clean();
<?php
class RESTClient {
const USER_AGENT = 'bob';
}
$url = 'http://www.example.com/';
$username = "fish";
$password = "paste";
$b64 = base64_encode("$username:$password");
$auth = "Authorization: Basic $b64";
$opts = array (
'http' => array (
'method' => "GET",
'header' => $auth,
'user_agent' => RESTClient :: USER_AGENT,
)
);
$context = stream_context_create($opts);
$fp = fopen($url, 'r', false, $context);
$result = "";
while ($str = fread($fp,1024)) {
$result .= $str;
}
fclose($fp);
echo $result;