Autor Zpráva
weny1
Profil *
Ahoj,
chtěl jsem se zeptat potřbuju zpracovávat soubor tohohle typu http://server.werco.cz/xml/zasoby.xml?login=****&pass=*** <-- MD5 heslo

Snažím se takto

$url="http://server.werco.cz/xml/zasoby.xml?login=***&pass=****";
$data = file_get_contents($url);
echo"$data";

ale stále se mi ukazuje přihlašovací stránka, jako když bach to dal jen http://server.werco.cz/xml/zasoby.xml

Přitom pokud použiju celou tu url a dám jí do řádku, tak to projde.
Nevěděl by prosím někdo, proč to neprochází přes file_get_contents.

děkuju
Alphard
Profil
To je podle nějakého dokumentovaného API? Ten formulář odesílá data metodou post. A když už by došlo ke správnému přihlášení, očekával bych nastavení session a přesměrování. To by takto jednoduchý file_get_contents nezvládl.
weny1
Profil *
Zkoušel jsem to i přes cURL, ale to mi zase posílá chybu 302. Je to zvláštní už jsem zpracovával hodně feedů, ale s tímhle jsem se setkal prvně. Oni mají udělané přihlášení pomocí svého formuláře nebo pomocí předání parametrů v URL, kde login je klasické číslo a heslo mají předávané v md5. Pokud to takhle použiju v normálním URL, tak to projde, ale vůbec se mi nedaří ten soubor stáhnout a zpracovat.

Kdyby někdo věděl budu moc rád
juriad_
Profil *
302 neni chyba. Vybizi te k presmerovani na dalsi stranku. Jeji url ti posila v hlavicce Location.
weny1
Profil *
Ahoj, nejsem moc kovanej v cURL vytvořil jsem tohle a to mi vypíše to přesměrování, ale nevím jak ho tedy zpracovat, respektive, jak se dostat k tomu obsahu abych ho následně zpracoval.
Děkuju

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '$moje url_s _parametry');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request_xml);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));


$start = array_sum(explode(' ', microtime()));
$result = curl_exec($ch);
$stop = array_sum(explode(' ', microtime()));
$totalTime = $stop - $start;

if ( curl_errno($ch) ) {
$result = 'ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch);
} else {
$returnCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
switch($returnCode){
case 200:
break;
default:
$result = 'HTTP ERROR -> ' . $returnCode;
break;
}
}

curl_close($ch);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: