Ответы:
Если вам не нужно больше, чем просто содержимое файла, вы можете использовать file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Для чего-то более сложного, я бы использовал cURL .
failed to open stream: HTTP request failed!
file_get_contents
не позволяет вам сделать запрос с помощью пользовательских файлов cookie, заголовков и других вещей, которые обычно отправляет браузер, поэтому вы можете не получить ответ, который искали. В этом случае вам лучше использовать CURL в любом случае. (Но это не случай ОП.)
Для более сложных запросов GET / POST вы можете установить библиотеку CURL ( http://us3.php.net/curl ):
$ch = curl_init("REMOTE XML FILE URL GOES HERE"); // such as http://example.com/example.xml
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
file_get_contents()
. Простая четырехбуквенная строка заняла около 10 секунд, а скручивание - более 1 секунды.
http_get
должен сделать свое дело. Преимущества http_get
over file_get_contents
включают возможность просмотра заголовков HTTP, доступа к деталям запроса и контроля времени ожидания соединения.
$response = http_get("http://www.example.com/file.xml");
Помните, что если вы используете прокси-сервер, вам нужно сделать небольшой трюк в своем php-коде:
(PROXY WITHOUT AUTENTICATION EXAMPLE)
<?php
$aContext = array(
'http' => array(
'proxy' => 'proxy:8080',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
?>
В зависимости от того, позволяет ли ваша настройка php открывать URL-адреса, вы также можете просто указать URL с аргументами get в строке (например, http://example.com?variable=value )
Изменить: Перечитывая вопрос, я не уверен, хотите ли вы передать переменные или нет - если вы не можете, просто отправьте запрос fopen, связавшись с http://example.com/filename.xml - не стесняйтесь игнорировать переменную = значение части
Мне нравится использовать fsockopen open для этого.
С другой стороны, использование REST API других серверов очень популярно в PHP. Предположим, вы ищете способ перенаправить некоторые HTTP-запросы на другой сервер (например, получить файл XML). Вот пакет PHP, чтобы помочь вам:
https://github.com/romanpitak/PHP-REST-Client
Итак, получив XML-файл:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzle - очень хорошо известная библиотека, которая позволяет очень легко выполнять всевозможные HTTP-вызовы. Смотрите https://github.com/guzzle/guzzle . Установить с помощью composer require guzzlehttp/guzzle
и запустить composer install
. Теперь приведенного ниже кода достаточно для вызова http.
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();