<?php 
/* 
 * test_http.php 
 * 
 * @(#) $Header: /opt2/ena/metal/http/test_http.php,v 1.19 2011/01/27 02:18:18 mlemos Exp $ 
 * 
 */ 
 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE>Test for Manuel Lemos' PHP HTTP class</TITLE> 
</HEAD> 
<BODY> 
<H1 align="center">Test for Manuel Lemos' PHP HTTP class</H1> 
<HR> 
<UL> 
<?php 
    require("http.php"); 
 
    /* Uncomment the line below when accessing Web servers or proxies that 
     * require authentication. 
     */ 
    /* 
    require("sasl.php"); 
    */ 
 
    set_time_limit(0); 
    $http=new http_class; 
 
    /* Connection timeout */ 
    $http->timeout=0; 
 
    /* Data transfer timeout */ 
    $http->data_timeout=0; 
 
    /* Output debugging information about the progress of the connection */ 
    $http->debug=1; 
 
    /* Format dubug output to display with HTML pages */ 
    $http->html_debug=1; 
 
 
    /* 
     *  Need to emulate a certain browser user agent? 
     *  Set the user agent this way: 
     */ 
    $http->user_agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; 
 
    /* 
     *  If you want to the class to follow the URL of redirect responses 
     *  set this variable to 1. 
     */ 
    $http->follow_redirect=1; 
 
    /* 
     *  How many consecutive redirected requests the class should follow. 
     */ 
    $http->redirection_limit=5; 
 
    /* 
     *  If your DNS always resolves non-existing domains to a default IP 
     *  address to force the redirection to a given page, specify the 
     *  default IP address in this variable to make the class handle it 
     *  as when domain resolution fails. 
     */ 
    $http->exclude_address=""; 
 
    /* 
     *  If you want to establish SSL connections and you do not want the 
     *  class to use the CURL library, set this variable to 0 . 
     */ 
    $http->prefer_curl=0; 
 
    /* 
     *  If basic authentication is required, specify the user name and 
     *  password in these variables. 
     */ 
 
    $user=""; 
    $password=""; 
    $realm="";       /* Authentication realm or domain      */ 
    $workstation=""; /* Workstation for NTLM authentication */ 
    $authentication=(strlen($user) ? UrlEncode($user).":".UrlEncode($password)."@" : ""); 
 
/* 
    Do you want to access a page via SSL? 
    Just specify the https:// URL. 
    $url="https://www.openssl.org/"; 
*/ 
 
    $url="http://".$authentication."www.php.net/"; 
 
    /* 
     *  Generate a list of arguments for opening a connection and make an 
     *  HTTP request from a given URL. 
     */ 
    $error=$http->GetRequestArguments($url,$arguments); 
 
    if(strlen($realm)) 
        $arguments["AuthRealm"]=$realm; 
 
    if(strlen($workstation)) 
        $arguments["AuthWorkstation"]=$workstation; 
 
    $http->authentication_mechanism=""; // force a given authentication mechanism; 
 
    /* 
     *  If you need to access a site using a proxy server, use these 
     *  arguments to set the proxy host and authentication credentials if 
     *  necessary. 
     */ 
    /* 
    $arguments["ProxyHostName"]="127.0.0.1"; 
    $arguments["ProxyHostPort"]=3128; 
    $arguments["ProxyUser"]="proxyuser"; 
    $arguments["ProxyPassword"]="proxypassword"; 
    $arguments["ProxyRealm"]="proxyrealm";  // Proxy authentication realm or domain 
    $arguments["ProxyWorkstation"]="proxyrealm"; // Workstation for NTLM proxy authentication 
    $http->proxy_authentication_mechanism=""; // force a given proxy authentication mechanism; 
    */ 
 
    /* 
     *  If you need to access a site using a SOCKS server, use these 
     *  arguments to set the SOCKS host and port. 
     */ 
    /* 
    $arguments["SOCKSHostName"]='127.0.0.1'; 
    $arguments["SOCKSHostPort"]=1080; 
    $arguments["SOCKSVersion"]='5'; 
    */ 
 
    /* Set additional request headers */ 
    $arguments["Headers"]["Pragma"]="nocache"; 
/* 
    Is it necessary to specify a certificate to access a page via SSL? 
    Specify the certificate file this way. 
    $arguments["SSLCertificateFile"]="my_certificate_file.pem"; 
    $arguments["SSLCertificatePassword"]="some certificate password"; 
*/ 
 
/* 
    Is it necessary to preset some cookies? 
    Just use the SetCookie function to set each cookie this way: 
 
    $cookie_name="LAST_LANG"; 
    $cookie_value="de"; 
    $cookie_expires="2010-01-01 00:00:00"; // "" for session cookies 
    $cookie_uri_path="/"; 
    $cookie_domain=".php.net"; 
    $cookie_secure=0; // 1 for SSL only cookies 
    $http->SetCookie($cookie_name, $cookie_value, $cookie_expiry, $cookie_uri_path, $cookie_domain, $cookie_secure); 
*/ 
 
 
    echo "<LI><H2>Opening connection to:</H2>\n<P><TT>",HtmlSpecialChars($arguments["HostName"]),"</TT></P>\n"; 
    flush(); 
    $error=$http->Open($arguments); 
    echo "</LI>\n"; 
 
    if($error=="") 
    { 
        echo "<LI><H2>Sending request for page:</H2>\n<P><TT>"; 
        echo HtmlSpecialChars($arguments["RequestURI"]),"\n"; 
        if(strlen($user)) 
            echo "\nLogin:    ",$user,"\nPassword: ",str_repeat("*",strlen($password)); 
        echo "</TT></P>\n"; 
        flush(); 
        $error=$http->SendRequest($arguments); 
        echo "</LI>\n"; 
 
        if($error=="") 
        { 
            echo "<LI><H2>Request:</H2>\n<PRE>\n".HtmlSpecialChars($http->request)."</PRE></LI>\n"; 
            echo "<LI><H2>Request headers:</H2>\n<PRE>\n"; 
            for(Reset($http->request_headers),$header=0;$header<count($http->request_headers);Next($http->request_headers),$header++) 
            { 
                $header_name=Key($http->request_headers); 
                if(GetType($http->request_headers[$header_name])=="array") 
                { 
                    for($header_value=0;$header_value<count($http->request_headers[$header_name]);$header_value++) 
                        echo $header_name.": ".$http->request_headers[$header_name][$header_value],"\r\n"; 
                } 
                else 
                    echo $header_name.": ".$http->request_headers[$header_name],"\r\n"; 
            } 
            echo "</PRE>\n"; 
            flush(); 
 
            $headers=array(); 
            $error=$http->ReadReplyHeaders($headers); 
            echo "</LI>\n"; 
            if($error=="") 
            { 
                echo "<LI><H2>Response status code:</H2>\n<P>".$http->response_status; 
                switch($http->response_status) 
                { 
                    case "301": 
                    case "302": 
                    case "303": 
                    case "307": 
                        echo " (redirect to <TT>".$headers["location"]."</TT>)<BR>\nSet the <TT>follow_redirect</TT> variable to handle redirect responses automatically."; 
                        break; 
                } 
                echo "</P></LI>\n"; 
                echo "<LI><H2>Response headers:</H2>\n<PRE>\n"; 
                for(Reset($headers),$header=0;$header<count($headers);Next($headers),$header++) 
                { 
                    $header_name=Key($headers); 
                    if(GetType($headers[$header_name])=="array") 
                    { 
                        for($header_value=0;$header_value<count($headers[$header_name]);$header_value++) 
                            echo $header_name.": ".$headers[$header_name][$header_value],"\r\n"; 
                    } 
                    else 
                        echo $header_name.": ".$headers[$header_name],"\r\n"; 
                } 
                echo "</PRE></LI>\n"; 
                flush(); 
 
                echo "<LI><H2>Response body:</H2>\n<PRE>\n"; 
 
                /* 
                    You can read the whole reply body at once or 
                    block by block to not exceed PHP memory limits. 
                */ 
 
                /* 
                $error = $http->ReadWholeReplyBody($body); 
                if(strlen($error) == 0) 
                    echo HtmlSpecialChars($body); 
                */ 
 
                for(;;) 
                { 
                    $error=$http->ReadReplyBody($body,1000); 
                    if($error!="" 
                    || strlen($body)==0) 
                        break; 
                    echo HtmlSpecialChars($body); 
                } 
 
                echo "</PRE></LI>\n"; 
                flush(); 
            } 
        } 
        $http->Close(); 
    } 
    if(strlen($error)) 
        echo "<H2 align=\"center\">Error: ",$error,"</H2>\n"; 
?> 
</UL> 
<HR> 
</BODY> 
</HTML> 
 
 |