Відповіді:
Якщо вам не потрібен більше, ніж лише вміст файлу, ви могли б використовувати 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()
. Простий рядок з 4 літер займав близько 10 секунд, тоді як завитка займала більше 1 секунди.
http_get
повинен зробити трюк. До переваг http_get
понад 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();