file_get_contents позади прокси?

Используйте POST, чтобы создать, и ПОМЕСТИТЬ в обновление. Это - то, как Ruby on Rails делает его, так или иначе.

PUT    /items/1      #=> update
POST   /items        #=> create
71
задан alex 19 August 2011 в 01:35
поделиться

2 ответа

Чтобы использовать file_get_contents () через прокси-сервер, который не требует аутентификации, должно выполняться что-то вроде этого:

(Я не могу проверить этот: мой прокси требует аутентификации)

$aContext = array(
    'http' => array(
        'proxy'           => 'tcp://192.168.0.2:3128',
        'request_fulluri' => true,
    ),
);
$cxContext = stream_context_create($aContext);

$sFile = file_get_contents("http://www.google.com", False, $cxContext);

echo $sFile;

Конечно, замена IP и порта моего прокси на те, которые подходят для вас; -)

Если вы получаете такую ​​ошибку:

Warning: file_get_contents(http://www.google.com) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 407 Proxy Authentication Required

Это означает, что ваш прокси требует аутентификации.

Если прокси требует аутентификации, вам придется добавить пару строк, например:

$auth = base64_encode('LOGIN:PASSWORD');

$aContext = array(
    'http' => array(
        'proxy'           => 'tcp://192.168.0.2:3128',
        'request_fulluri' => true,
        'header'          => "Proxy-Authorization: Basic $auth",
    ),
);
$cxContext = stream_context_create($aContext);

$sFile = file_get_contents("http://www.google.com", False, $cxContext);

echo $sFile;

То же самое с IP и портом, но на этот раз также LOGIN и PASSWORD ;-) Проверьте все допустимые параметры http .

Теперь вы передаете прокси-серверу заголовок Proxy-Authorization , содержащий ваш логин и пароль.

И. .. Страница должна отображаться; -)

164
ответ дан 24 November 2019 в 12:53
поделиться

В зависимости от того, как работает прокси-сервер, stream_context_set_default может вам помочь .

$context  = stream_context_set_default(
  array(
    'http'=>array(
      'header'=>'Authorization: Basic ' . base64_encode('username'.':'.'userpass')
    )
  )
);
$result = file_get_contents('http://..../...');
2
ответ дан 24 November 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: