file_get_contents(url): no se pudo abrir la transmisión

programación


Hola a todos;

Tengo un archivo php que obtiene el contenido de una URL, recibo el mensaje de error

Warning: file_get_contents(http://xxxxxx): failed to open stream: HTTP request failed! in xxxx.php on line xx

Probé muchas soluciones en línea pero todavía no funciona. aquí está el código

$cryptpass = rawurlencode(crypt($pc['pcpassword']));
$url = "http://" . $pc['pcname']."/Reports/ReportList.php?&username={$pc['pcusername']}&cryptpass=$cryptpass&noredir=1";
$parsed_list = read_general_list($url, false);
C#
function read_general_list($url, $make_assoc = false)
    {
        $compressed_data = file_get_contents($url);
    }

$compressed_data siempre es nulo y arroja un error:

Advertencia: file_get_contents (http://xxxxxx): no se pudo abrir la transmisión: ¡la solicitud HTTP falló! en xxxx.php en la línea xx

¿Alguna sugerencia por favor?

Solución 1

Como dice el mensaje de error, la transmisión (URL) solicitada no se puede abrir. Hay muchas razones posibles para esto:
1. La URL base es incorrecta. $pc['pcname']

2. el nombre de usuario y/o la contraseña son incorrectos
3. nombre de usuario/contraseña no tiene permiso en el servidor
4. Su sistema no puede llegar al servidor (firewall, permisos PHP,…)
4. …

Usaría la siguiente estrategia para depurar:
1. Deshazte de $url y escríbelo.
2. Utilice un navegador con herramientas de depuración (por ejemplo, Firefox/Firebug) e intente acceder a esa URL.
3. Mire los encabezados devueltos para ver qué error informa el servidor (si corresponde).
4. Piense por qué se devuelve ese error…

Salud,
Pedro

Si esto responde a su pregunta, vote y márquelo como aceptado.

Solución 2

Lo siento, nunca actualicé esta pregunta por completo. Quizás si alguien todavía está buscando una respuesta.

Esto ha funcionado para mí. Esta es la función equivalente a File_get_contents, pero puede manejar una gran cantidad de datos. Encontré esta solución en línea.

function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

コメント

タイトルとURLをコピーしました