Door
Michael vanDijk
op 15-12-2020 10:07
gewijzigd op 15-12-2020 10:12
6.980 views
Hoi allemaal,
ik kom er nu niet meer uit. heb alle php.net artikelen betreffende bestandsysteem doorgelopen maar krijg het niet voor elkaar.
wat ik wil bereiken.
ik haal via een externe site een xml bestand op.
deze wordt gegenereerd door een php bestand. dus het is op de externe site een download.
hierdoor kan ik hem niet uitlezen direct.
dus waarschijnlijk moet ik hem eerst opslaan op de server waar de php script draaien?
hoe kan ik deze wegschrijven naar een map.
file() fwrite() file_get_contents() al geprobeerd maar lukt me niet.
of kan ik hem gewoon openen en dan mijn dingen eruit halen die ik nodig heb. ?
heb het nodig voor dit gedeelte van de code
$context = stream_context_create(array(
'http' => array(
'header' => "Authorization: Basic " . base64_encode("$usernamehttp:$passwordhttp")
)
));
$data = file_get_contents($url, false, $context);
//$data = simplexml_load_string($url);
$data = simplexml_load_string($url);
echo "<pre>";
print_r($data);
echo "</pre>";
if($data) {
echo "<pre>".print_r($data,true)."</pre>";
} else {
// de XML kan niet worden uitgelezen, toon de foutmeldingen!
echo "XML-feed kan niet geladen worden:\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
Weet je ook hoe het "XML genererende PHP script" werkt? Verwacht die misschien nog een speciale header, of controleert ie of een header een bepaalde waarde heeft? Je browser geeft standaard namelijk een zwik headers mee, dus misschien moet je er daar een van "kopiëren" (of "voor de zekerheid" gewoon allemaal meegeven).
Zit er dus een inlogactie tussen voordat je het kan bekijken? Of is het enkel een speciale header die er verwacht wordt?
die inlog actie is er al en die werkt. alleen normaal staat het xml bestand dan daar op de server, bij deze bied hij de xml aan als download...
daaromd at ik dacht/denk dat het iets moet zijn van bestand downloaden en kopieeren op de server dan het bestand parsen op de eigen server en dan de data in de database duwen.
[size=xsmall]Toevoeging op 15/12/2020 12:45:26:[/size]
ik krijg trouwens als ik een reply doe deze foutmelding :
Class Egulias\EmailValidator\EmailValidator does not exist
Dat het als download wordt aangeboden is echt niet van belang voor PHP.
Wat geeft file_get_contents nou precies terug?
En die Class-foutmelding op het forum is bekend bij Bas. Ik zal hem er nog even aan herinneren.
het heeft met de mail-notificatie te maken die eerder stuk was, maar ergens nog bugt.
en daaronder komt vanaf simplexml_load_string
de volgende fout
<b>Warning</b>: simplexml_load_string(): Entity: line 38: parser error : Opening and ending tag mismatch: link line 9 and head in <b>/var/www/vhosts/.nl/httpdocs/power/feed3.php</b> on line <b>31</b><br />
<br />
<b>Warning</b>: simplexml_load_string(): </head> in <b>/var/www/vhosts/.nl/httpdocs/power/feed3.php</b> on line <b>31</b><br />
<br />
<b>Warning</b>: simplexml_load_string(): ^ in <b>/var/www/vhosts/.nl/httpdocs/power/feed3.php</b> on line <b>31</b><br />