Foros del Web » Programando para Internet » PHP »

fopen(url) y 404

Estas en el tema de fopen(url) y 404 en el foro de PHP en Foros del Web. Buenas: Estoy usando fopen para tomar datos de una api web del modo: Código: $handle = fopen("http://www.example.com/api/", "r"); El problema es que no puedo obtener ...
  #1 (permalink)  
Antiguo 13/04/2009, 21:28
Avatar de Viet  
Fecha de Ingreso: octubre-2003
Ubicación: Mar del Plata - Argentina
Mensajes: 247
Antigüedad: 20 años, 6 meses
Puntos: 2
Pregunta fopen(url) y 404

Buenas:

Estoy usando fopen para tomar datos de una api web del modo:

Código:
$handle = fopen("http://www.example.com/api/", "r");
El problema es que no puedo obtener el codigo de response: 200, 401, 404, 500, etc

Lo puedo obtener con el fopen??

Gracias de antemano
__________________
Keep it simple and keep it fast.
  #2 (permalink)  
Antiguo 13/04/2009, 21:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: fopen(url) y 404

No, para eso debes de usar fsockopen para leer las cabeceras del request HTTP completo.

Saludos.
  #3 (permalink)  
Antiguo 14/04/2009, 06:35
Avatar de Viet  
Fecha de Ingreso: octubre-2003
Ubicación: Mar del Plata - Argentina
Mensajes: 247
Antigüedad: 20 años, 6 meses
Puntos: 2
Respuesta: fopen(url) y 404

Gracias Gastor por la respuesta.

Ayer, buscando un poco encontre este lindo script para hacerlo con la funcion file_get_contents():

Código:
function get_web_page( $url )
{
    $options = array( 'http' => array(
        'user_agent'    => 'spider',    // who am i
        'max_redirects' => 10,          // stop after 10 redirects
        'timeout'       => 120,         // timeout on response
    ) );
    $context = stream_context_create( $options );
    $page    = @file_get_contents( $url, false, $context );
 
    $result  = array( );
    if ( $page != false )
        $result['content'] = $page;
    else if ( !isset( $http_response_header ) )
        return null;    // Bad url, timeout

    // Save the header
    $result['header'] = $http_response_header;

    // Get the *last* HTTP status code
    $nLines = count( $http_response_header );
    for ( $i = $nLines-1; $i >= 0; $i-- )
    {
        $line = $http_response_header[$i];
        if ( strncasecmp( "HTTP", $line, 4 ) == 0 )
        {
            $response = explode( ' ', $line );
            $result['http_code'] = $response[1];
            break;
        }
    }
 
    return $result;
}
Tal vez le sirva a otro.
Saludos
__________________
Keep it simple and keep it fast.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:45.