Login   Register  
PHP Classes
elePHPant
Icontem

File: httpclient.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of mertuarez  >  HTTP client  >  httpclient.php  >  Download  
File: httpclient.php
Role: Class source
Content type: text/plain
Description: httpclient.php
Class: HTTP client
Send HTTP requests to Web servers
Author: By
Last change:
Date: 4 years ago
Size: 4,926 bytes
 

Contents

Class file image Download
<?php
class httpclient{
//  global $_SERVER;
  
public $port=0// socket port
  
public $host=''// host www.example.net
  
public $path=''// PATH /foo.php
  
public $dirname='';
  public 
$filename='';
  public 
$scheme='';
  public 
$argument=''// ?foo=bar&foo1=bar
  
public $post_data=''// foo=bar&foo1=bar
  
public $request_header=''// header sent to server
  
public $cookie_array=array(); // array('ssid' => 'ssid', 'foo' => 'bar')
  
public $response_data=''// data returned from server
  
public $response_header=''// header data from server
  
public $response_body='';
  public 
$response_status=0;
  
  function 
open($url,$post_data=''){
  
$this->port=(parse_url($urlPHP_URL_PORT) ? parse_url($urlPHP_URL_PORT) : 80); //set port
  
$this->host=parse_url($urlPHP_URL_HOST); 
  
$this->path=parse_url($urlPHP_URL_PATH);
  
$this->dirname=dirname($this->path);
  
$this->filename=dirname($this->path);
  
$this->argument=parse_url($urlPHP_URL_QUERY);
  
$this->scheme=parse_url($urlPHP_URL_SCHEME);
  
$this->post_data=$post_data;

  
$this->request_header=($this->post_data=='' $this->get_request_header($this->host,$this->path.'?'.$this->argument,$this->cookie_to_text($this->cookie_array)) : $this->post_request_header($this->host,$this->path.'?'.$this->argument,$this->post_data,$this->cookie_to_text($this->cookie_array)));
  
$this->response_data=$this->socket_open($this->host,$this->port,$this->request_header);
  
$this->response_header=$this->get_response_header($this->response_data);  
  
$this->cookie_array=$this->get_cookie($this->response_header);
  
$this->response_status=$this->get_status($this->response_header);
  
$this->response_body=$this->get_response_body($this->response_data);
 }

  function 
get_request_header($host,$path,$cookie){
  
  
$header='';
  
$header.="GET $path HTTP/1.1";
  
$header.="\r\n";
  
$header.="Host: $host";
  
$header.="\r\n";
  
$header.="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; sk; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)"
//  $header="User-Agent: ".$_SERVER['HTTP_USER_AGENT'];
  
$header.="\r\n";
  
$header.="Accept: */*";
  
$header.="\r\n";
  
$header.="Content-Type: application/x-www-form-urlencoded";
  
$header.="\r\n";
  
$header.="Keep-Alive: 300";
  
$header.="\r\n";
  
$header.="Connection: keep-alive";
  
$header.="\r\n";
  
$header.="Pragma: no-cache";
  
$header.="\r\n";
  
$header.="Cache-Control: no-cache";
  
$header.="\r\n";
  
$header.="Cookie: $cookie";
  
$header.="\r\n";
  
$header.="\r\n";
 
  return 
$header;
 }
 
   function 
post_request_header($host,$path,$post_data,$cookie){
  
$post_data_length=strlen($post_data);
  
  
$header='';
  
$header.="POST $path HTTP/1.1";
  
$header.="\r\n";
  
$header.="Host: $host";
  
$header.="\r\n";
  
$header.="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; sk; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)"
//  $header="User-Agent: ".$_SERVER['HTTP_USER_AGENT'];
  
$header.="\r\n";
  
$header.="Accept: */*";
  
$header.="\r\n";
  
$header.="Content-Length: $post_data_length";
  
$header.="\r\n";
  
$header.="Content-Type: application/x-www-form-urlencoded";
  
$header.="\r\n";
  
$header.="Keep-Alive: 300";
  
$header.="\r\n";
  
$header.="Connection: keep-alive";
  
$header.="\r\n";
  
$header.="Pragma: no-cache";
  
$header.="\r\n";
  
$header.="Cache-Control: no-cache";
  
$header.="\r\n";
  
$header.="Cookie: $cookie";
  
$header.="\r\n";
  
$header.="\r\n";
  
$header.="$post_data";
 
  return 
$header;
 }

  function 
cookie_to_text($cookie_array){
  
$cookie_to_text='';
  foreach(
$cookie_array as $key => $value) { $cookie_to_text.=$key.'='.$value;}
  return 
$cookie_to_text;
 }

  function 
socket_open($host,$port,$header){
  
$socket_open '';
  
$fp fsockopen($host$port);
      
fputs($fp$header);
      while(!
feof($fp)) {
        
$socket_open .= fgets($fp128); // receive the results of the request
        
}
      
fclose($fp);   // close the socket connection:
    
return $socket_open;
 }
 
  function 
get_response_header($response){
  
$header=explode"\r\n\r\n" $response,2);
  return 
$header[0];
 }
 
  function 
get_cookie($header){
  
$cookie=array();
  
$lines=explode("\r\n",$header);
  foreach(
$lines as $line) {
   
$fields=explode(" ",$line);
   
$columns=explode("=",$fields[1]);
   if (
$fields[0]=='Set-Cookie:') {$cookie[$columns[0]]=$columns[1];}
  }
  return 
$cookie;
 }
 
  function 
get_status($header){
  
preg_match("/(HTTP[^ ]*) ([^ ]*) ([^\r\n]*)/m"$header,$status);
  return 
$status[2]; 
 }
 
  function 
get_response_body($response){
  
$body=explode"\r\n\r\n" $response,2);
  return 
$body[1];
 }
  function 
save($file){
  
$fp=Fopen($file,'w');
   
Fputs($fp,$this->request_body);
   
Fclose($fp); 
  }
  
 function 
show_data(){
 echo 
$this->response_body;
 }
  
}

?>