<?php
// pouziti tridy HTTP_Server budeme ilustrovat na komunikaci s WebDAV serverem.
// Klient chce pomoci prikazu PROPFIND zjistit vsechny vlastnosti spojene s kolekci /moje/kolekce/
// nacteni tridy HTTP_Server
require_once( "http_server.php" );
// vytvorime novou instanci
$h = new HTTP_Server( "localhost" );
// pripojime se k serveru
$h->connect();
// vytvorime XML dokument, ktery odesleme spolu s dotazem
$xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>".
"<D:propfind xmlns:D=\"DAV:\">".
" <D:allprop/>".
"</D:propfind>";
// ulozime XML dokument do dotazu
// parametry jsou: obsah tela dotazu a MIME typ specifikujici obsah dotazu
// pro XML dokument muze byt pouzity MIME typ bud text/xml nebo application/xml
$h->setClientBody( $xml, "text/xml" );
// vytvorime hlavicku Depth (hodnota 0 rika, ze chceme pouze informace o kolekci, nikoli o jejich potomcich)
$h->setHeader( "Depth", 0 );
// odesleme dotaz PROPFIND na kolekci, ktera je urcena adresou /moje/kolekce/
$h->request( "PROPFIND", "/moje/kolekce/" );
// pockame na odpoved
$h->response();
// uzavreme spojeni se serverem
$h->close();
// zjistime hodnotu stavoveho kodu odpovedi
$status = $h->getStatus();
// pokud je stavovy kod 207 (server vratil XML dokument tvorici telo dotazu)
if ( $status["code"] == 207 )
{
// ziskame telo (XML dokument) odpovedi
$body = $h->getServerBody();
// zjistime hodnotu hlavicky Server
$server = $h->headerValue( "Server" );
// vytiskneme pozadovane informace
echo "Vse probehlo v poradku a server (".$server.") vratil nasledujici XML dokument.<br>".nl2br( htmlSpecialChars( $body ) );
}// if
else
// v pripade chyby vytiskneme stavovy kod a text, ktery server zaslal v hlavicce odpovedi
echo "Neco selhalo!<br>Stavovy kod: ".$status["code"]."<br>Text: ".$status["phrase"]."<br>Server pouziva verzi ".$status["version"];
?>