The file which I'm trying to download from my PHP script is this one:
http://www.navarra.es/appsext/DescargarFichero/default.aspx?codigoAcceso=OpenData&fichero=Farmacias/Farmacias.xml
But I can't do it using neither file_get_contents()
nor cURL
. I'm getting the error Object reference not set to an instance of an object.
Any idea how to do it?
Thanks a lot, Pablo.
Updated to add the code:
$url = "http://www.navarra.es/appsext/DescargarFichero/default.aspx?codigoAcceso=OpenData&fichero=Farmacias/Farmacias.xml";
$simple = simplexml_load_file(file_get_contents($url));
foreach ($simple->farmacia as $farmacia)
{
var_dump($farmacia);
}
And the solution thanks to @Gordon:
$url = "http://www.navarra.es/appsext/DescargarFichero/default.aspx?codigoAcceso=OpenData&fichero=Farmacias/Farmacias.xml";
$file = file_get_contents($url, FALSE, stream_context_create(array('http' => array('user_agent' => 'php' ))));
$simple = simplexml_load_string($file);
You dont need
cURL
, norfile_get_contents
to load XML into any of PHP's DOM Based XML parsers.However, in your particular case, the issue seems to be that the server expects a user agent in the http request. If the user agent is not set in your php.ini, you can use the libxml functions and provide it as a stream context:
Live Demo
If you dont want to parse the XML file afterwards, you can use
file_get_contents
as well. You can pass the stream context as the third argument:Live Demo