//用php写一个服务器端的http类
//File:Http.class.php
//Author: lijunjie
//Date: 2007-08-05
//E-mail:lijunjie1982@yahoo.com.cn
//修改历史:
//1. 2007-09-21对参数里的名字也进行了编码
//2. 2007-9-22对参数的编码的算法进行了纠正和简化
//3. 2007-10-11规范了书写的格式,添加了几个方法
//4. 2007-10-13允许添加请求头信息和输出相应头信息,修改了post和get的调用方法,
//现在只返回true|false,相应内容通过其它方法得到,这样基本可以不用is_error方法了.
//由于此修改该版本无法与以前版本兼容,故又添加了获取版本号的方法,目前版本定为1.1.0
//5. 2007-10-17 修改了addGetParam中的一个bug从 $this->_url .= strpos($this->_url,'?') == -1?'?':'&'; 到$this->_url .= strpos($this->_url,'?') ===false?'?':'&';
//6. 2007-11-7 将 $this->_port =isset($arr_url['port'])?$arr_url['port']:'80'; 修改成 $this->_port= isset($arr_url['port'])?$arr_url['port']:'80';避免一个notice
class Http {
private$_url =''; //请求资源的地址
private$_params = '';//post参数字符串
private$_headers = '';//header参数字符串
private$_host =''; //主机
private$_port =''; //端口号
private$_path =''; //资源路径
private$_query = '';//查询字符串
private$_time_out = 10;//请求超时时间(单位:s)
private$_response = array();//相应信息
private$_version = "Http_classv1.1.0 \ncopyright@lijunjie";
public$err_no = '';//错误代码
public$err_str = '';//错误描述
publicfunction Http($url= ''){
$this->_url= $url;
}
publicfunction setURL($url= ''){
$this->_url= $url;
}
publicfunction setTimeOut($timeout = 10){
$this->_time_out= $timeout;
}
publicfunction clear(){
$this->_url= "";
$this->_params= "";
$this->_headers= "";
$this->err_no= "";
$this->err_str= "";
}
publicfunction addHeader($str_header) {
$this->_headers.= $str_header ."\n";
}
publicfunction setHeader($str_header) {
$this->_headers= $str_header ."\n";
}
publicfunctionaddGetParam($arrParam) {
$this->_url.= strpos($this->_url,'?')===false?'?':'&';
$this->_url.= http_build_query($arrParam);
}
publicfunctionaddPostParam($arrParam) {
$this->_params.= strlen($this->_params) >0?'&':'';