Używam funkcji PHP file_get_contents()
do pobierania zawartości adresu URL, a następnie przetwarzam nagłówki przez zmienną $http_response_header
.
Problem polega na tym, że niektóre adresy URL wymagają przesłania danych do adresu URL (na przykład strony logowania).
Jak mogę to zrobić?
Zdaję sobie sprawę z tego, że używając stream_context mogę to zrobić, ale nie jestem całkowicie pewien.
Dzięki.
php
http
http-post
file-get-contents
Paras Chopra
źródło
źródło
Odpowiedzi:
Wysłanie żądania HTTP POST przy użyciu
file_get_contents
wcale nie jest takie trudne: jak się domyślasz, musisz użyć$context
parametru.Podany przykład znajduje się w podręczniku PHP na tej stronie: Opcje kontekstu HTTP (cytowanie) :
Zasadniczo musisz utworzyć strumień z odpowiednimi opcjami (na tej stronie znajduje się pełna lista) i użyć go jako trzeciego parametru
file_get_contents
- nic więcej ;-)Na marginesie: ogólnie mówiąc, do wysyłania żądań HTTP POST, zwykle używamy curl, który zapewnia wiele opcji - ale strumienie są jedną z miłych rzeczy w PHP, o których nikt nie wie ... szkoda ... .
źródło
content
nie musi być tablicą PHP: musi być querystring (czyli musi ona ma następujący format:param1=value1¶m2=value2¶m3=value3
) ;; co oznacza, że prawdopodobnie będziesz musiał użyćhttp_build_query($_POST)
$postdata = http_build_query($_POST)
.\r\n
Alternatywnie możesz także użyć fopen
źródło
toto=1&tata=2
również. Jednak nie skorzystałem zfopen
.źródło
file_get_contents
zamiastfopen
+stream_get_contents
. I nawet nie zamykasz „pliku”. Zobacz zaakceptowaną odpowiedź @PascalMARTIN.