Procital jsem si forum, ale nenasel jsem bohuzel zadnou radu jak v PHP pomoci fopen otevrit soubor z cizi adresy a soucasne parametry zaslat metodou POST.
Metoda GET je jednoducha, nastrkam parametry do adresy.
Ovsem ja mam jako parametr xml a zpatky mi to vrati taky xml. Jenomze ne a ne na to prijit.
Nemate nejaky jednoduchy priklad jak to provest?
Tady mam zkracenou verzi pokusu ktery nefunguje
function obsluhapocatecnihotagu($parser, $nazev, $atributy) { ...}
function obsluhakoncovehotagu($parser, $nazev) { ...}
xml_set_element_handler($parser, "obsluhapocatecnihotagu", "obsluhakoncovehotagu");
function znaky($parser, $data) {echo($data);}
xml_set_character_data_handler($parser, "znaky");
$site="http://adresa";
//v $data je vstupni xml
# array with the options to create stream context
$opts = Array();
# compose HTTP request header
$headers =
"POST $location HTTP/1.0\r\n" .
"Host: $site\r\n" .
"Connection: close\r\n" .
"Authorization: autorizacni kod=\r\n".
($user_agent ? "User-Agent: $user_agent\r\n" : '') .
($session_id ? "Cookie: PHPSESSID=$session_id\r\n" : '') .
"Content-Type: text/xml\r\n" .
"Content-Length: " . strlen($data) . "\r\n\r\n";
# define context options for HTTP request
$opts['http']['method'] = 'POST';
$opts['http']['header'] = $headers;
$opts['http']['content'] = $data;
# create stream context
$context = stream_context_create($opts);
if(!($conn = fopen($site,"r",false,$context))) {
die("Nelze otevrit soubor data.xml!");
} else {
while ($d = fread($conn, 4096)) {
if(!xml_parse($parser, $d, feof($conn))) {die("Chyba XML");}
}
}
Diky
(jestli to jde i jinou funkci, tak proc ne, jenomze narazil jsem uz jenom na fsocketopen a ten pouzit nelze-alespon jsem takovy server nenasel, co by to mel povolene)
http://www.issociate.de/board/post/286420/Problem_with_fopen_and_sending_POST_vars.html
Metodu POST nelze pri fopen pouzit.
A krome vyse uvedenych funkci (curl a fsockopen), zrejme nelze pouzit jine metody.
Lze pouzit i XMLHttpRequest, ktery POST umi. Ale hacek je ten, ze to pracuje pouze na klientovi, pac je to javascript.
<HTML>Bohužel bez toho zákazu by tu řada nezodpovědných jedinců vytvářela spojení za různým účelem (např. k bruteforce útokům na FTP servery, DoS útokům, dělala by různá proxy atd.). Ten zákaz je třeba chápat jako prevence potíží, nikoliv jako zlou příčinu. Ano, ve vašem případě je to komplikace, osobně však nedokážu přijít na to, jaký je vlastně váš cílový záměr.</HTML>