2010-06-13 24 views
14

Necesito realizar una solicitud get y enviar encabezados junto con ella. ¿Qué puedo usar para hacer esto?PHP GET Solicitud, envío de encabezados

El encabezado principal que necesito establecer es el navegador. ¿Hay una forma fácil de hacer esto?

+1

¿Estás escribiendo código PHP para realizar la solicitud GET, o quieres usar tu navegador (u otra cosa) para simular diferentes agentes de usuarios que soliciten tus páginas PHP? – grossvogel

+0

Estoy escribiendo código para realizar la solicitud y almacenar la respuesta como una cadena –

+0

¿A qué encabezado del "navegador" te refieres? necesita devolver la cadena de agente de usuario? –

Respuesta

29

Si está utilizando cURL, puede usar curl_setopt ($handle, CURLOPT_USERAGENT, 'browser description') para definir el encabezado user-agent de la solicitud.

Si está utilizando file_get_contents, echa un vistazo a este truco de un ejemplo en la página del manual de file_get_contents:

// Create a stream 
$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "Cookie: foo=bar\r\n" . 
       "User-agent: BROWSER-DESCRIPTION-HERE\r\n" 
) 
); 

$context = stream_context_create($opts); 

// Open the file using the HTTP headers set above 
$file = file_get_contents('http://www.example.com/', false, $context); 
+0

Gracias resuelto :) –

+0

¡Gracias por esto! funcionó perfecto – jones

+0

¿Puedo hacer una solicitud HTTPS con esto? –

-2

Puede utilizar el header función para la que, ejemplo:

header('Location: http://www.example.com?var=some_value'); 

Tenga en cuenta que:

Recuerde que la cabecera() debe ser llamado antes de enviar cualquier salida real , ya sea por etiquetas HTML normales, líneas en blanco en un archivo, o desde PHP. Es un error muy común al leer código con include(), o require(), funciones o otra función de acceso a archivos, y tiene espacios o líneas vacías que tienen salida antes de llamar a header(). El mismo problema existe cuando se utiliza un único archivo PHP/HTML .

+0

Necesito almacenar la respuesta de la solicitud en una cadena para su procesamiento. Por lo tanto, no puedo usar este método. –

+0

@ James Jeffery: No entiendo lo que quieres decir con eso, ¿podrías ser más específico o agregar más detalles a tu pregunta? Gracias – Sarfraz

+0

¿Estás tratando de usar AJAX? ¿O acceder a las variables de PHP con Javascript? –

1

Si solicita una página, utilice cURL.

Con el fin de establecer las cabeceras (en este caso, la cabecera User-Agent en la petición HTTP, puede utilizar esta sintaxis:

<?php 
$curl_h = curl_init('http://www.example.com/'); 

curl_setopt($curl_h, CURLOPT_HTTPHEADER, 
    array(
     'User-Agent: NoBrowser v0.1 beta', 
    ) 
); 

# do not output, but store to variable 
curl_setopt($curl_h, CURLOPT_RETURNTRANSFER, true); 

$response = curl_exec($curl_h); 
Cuestiones relacionadas