Odpowiedzi:
O ile nie potrzebujesz więcej niż tylko zawartości pliku, możesz użyć file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Dla czegokolwiek bardziej złożonego użyłbym cURL .
failed to open stream: HTTP request failed!
file_get_contents
nie pozwala ci składać wniosku z niestandardowymi plikami cookie, nagłówkami i innymi rzeczami, które przeglądarka zwykle wysyła, więc możesz nie otrzymać odpowiedzi, której szukasz. W takim przypadku lepiej byłoby użyć CURL. (Ale to nie jest przypadek OP.)
W przypadku bardziej zaawansowanych żądań GET / POST można zainstalować bibliotekę 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()
. Prosty ciąg 4 liter zajął z nim około 10 sekund, podczas gdy zwijanie trwało bardziej rozsądnie ~ 1 sekundę.
http_get
powinien załatwić sprawę. Zalety http_get
over file_get_contents
obejmują możliwość przeglądania nagłówków HTTP, szczegółów żądań dostępu i kontroli limitu czasu połączenia.
$response = http_get("http://www.example.com/file.xml");
Pamiętaj, że jeśli używasz proxy, musisz zrobić małą sztuczkę w kodzie 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;
?>
W zależności od tego, czy konfiguracja php zezwala na otwieranie adresów URL, możesz również po prostu otworzyć adres URL za pomocą argumentów get w ciągu (np. Http://example.com?variable=value )
Edycja: Ponownie przeczytaj pytanie Nie jestem pewien, czy chcesz przekazać zmienne, czy nie - jeśli nie, możesz po prostu wysłać żądanie otwarcia zawierające http://example.com/filename.xml - nie krępuj się zignorować część zmienna = wartość
Lubię używać do tego fsockopen.
Z drugiej strony, używanie REST API innych serwerów jest bardzo popularne w PHP. Załóżmy, że szukasz sposobu przekierowania niektórych żądań HTTP na inny serwer (na przykład uzyskanie pliku xml). Oto pakiet PHP, który Ci pomoże:
https://github.com/romanpitak/PHP-REST-Client
Pobieranie pliku XML:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzle jest bardzo dobrze znaną biblioteką, która sprawia, że niezwykle łatwe jest wykonywanie wszelkiego rodzaju połączeń HTTP. Zobacz https://github.com/guzzle/guzzle . Zainstaluj za pomocą composer require guzzlehttp/guzzle
i uruchom composer install
. Teraz poniższy kod wystarczy, aby uzyskać połączenie http.
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();