Planuję używać PHP do prostych wymagań. Muszę pobrać treść XML z adresu URL, dla którego muszę wysłać żądanie HTTP GET na ten adres URL.
Jak to zrobić w PHP?
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 ):
źródło
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ę. Zaletyhttp_get
overfile_get_contents
obejmują możliwość przeglądania nagłówków HTTP, szczegółów żądań dostępu i kontroli limitu czasu połączenia.źródło
Pamiętaj, że jeśli używasz proxy, musisz zrobić małą sztuczkę w kodzie php:
źródło
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ść
źródło
Lubię używać do tego fsockopen.
źródło
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:
Pobieranie pliku XML:
źródło
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 uruchomcomposer install
. Teraz poniższy kod wystarczy, aby uzyskać połączenie http.źródło