Estoy usando la función de PHP file_get_contents()
para recuperar el contenido de una URL y luego procesar encabezados a través de la variable $http_response_header
.
Ahora el problema es que algunas de las URL necesitan algunos datos para publicarse en la URL (por ejemplo, páginas de inicio de sesión).
¿Cómo puedo hacer eso?
Me doy cuenta de que usando stream_context puedo hacerlo, pero no estoy del todo claro.
Gracias.
php
http
http-post
file-get-contents
Paras Chopra
fuente
fuente
Respuestas:
Enviar una solicitud HTTP POST usando
file_get_contents
no es tan difícil, en realidad: como adivinó, debe usar el$context
parámetro.Hay un ejemplo dado en el manual de PHP, en esta página: Opciones de contexto HTTP (cita) :
Básicamente, debe crear una secuencia, con las opciones correctas (hay una lista completa en esa página) , y usarla como el tercer parámetro para
file_get_contents
- nada más ;-)Como nota al margen: en términos generales, para enviar solicitudes HTTP POST, tendemos a usar curl, que ofrece muchas opciones y todo, pero las transmisiones son una de las cosas buenas de PHP que nadie sabe ... demasiado mal ... .
fuente
content
no debe ser una matriz PHP: tiene que ser una cadena de consulta (es decir, debe tiene este formato:param1=value1¶m2=value2¶m3=value3
) ;; Lo que significa que probablemente tendrá que usarhttp_build_query($_POST)
$postdata = http_build_query($_POST)
.\r\n
saltos de línea; consulte: stackoverflow.com/a/2107792/404960Una alternativa, también puedes usar fopen
fuente
toto=1&tata=2
también. No utilicé elfopen
, sin embargo.fuente
file_get_contents
lugar defopen
+stream_get_contents
. Y ni siquiera está cerrando el "archivo". Vea la respuesta aceptada por @PascalMARTIN.