码迷,mamicode.com
首页 > 其他好文 > 详细

socket变成发送GET请求

时间:2015-09-27 14:50:02      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

可以根据几根url地址,分析出主机,地址,协议等,然后用封装成的类拼接成GET请求信息,用fsockopen连接主机,进行读取操作,获取响应信息,打印

<?php
//http连接接口
interface proto{
    //连接url
    public function conn($url);
    //发送get请求
    public function get();
    //发送post
    public function post($num);
    //关闭连接
    public function close();
}
class Http implements proto{
    const CRLF="\r\n";
    protected $response=‘‘;
    protected $poststr=‘‘;
    protected $errno=-1;
    protected $errstr=‘‘;
    protected $version=‘HTTP/1.1‘;
    protected $fh=null;
    protected $url=array();
    protected $line=array();
    protected $header=array();
    protected $body=array();

    public function __construct($url){
        $this->conn($url);
        $this->setheader();
    }
    //负责写请求行
    protected function setLine($method){
        $this->line[0]=$method .‘ ‘.$this->url[‘path‘] .‘ ‘.$this->version;
    }
    //负责写请求信息
    protected function setHeader(){
        $this->header[]=‘Host:‘.$this->url[‘host‘];
    }
    //负责写主题信息
    protected function setBody(){

    }

    //连接url
    public function conn($url){
        $this->url=parse_url($url);
        //判断端口
        if(!isset($this->url[‘port‘])){
            $this->url[‘port‘]=80;
        }
        $this->fh=fsockopen($this->url[‘host‘],$this->url[‘port‘],$this->errno,$this->errstr,3);
    }
    //构造get请求数据
    public function get(){
        $this->setLine(‘GET‘);
        $this->request();
        return $this->response;
    }
    //构造post请求数据
    public function post($num){
        $this->setLine(‘POST‘);
        $this->header[]=‘content-length:‘.$num;
        $this->header[]=‘content-type:application/x-www-form-urlencoded‘;
        // print_r($this->header);
    }
    //添加postti提交的信息
    public function postStr($str){
        $this->poststr=$str;
    }
    //真正的请求
    public function request(){
        $req=array_merge($this->line,$this->header,array(‘‘),$this->body,array(‘‘));//拼接请求信息为数组
        // print_r($req);
        $req=implode(self::CRLF,$req);
        // echo $req;
        fwrite($this->fh,$req);

        while(!feof($this->fh)){
            $this->response.=fread($this->fh,1024);
        }
        $this->close();
        
    }
    //关闭连接
    public function close(){
        fclose($this->fh);
    }

}

//调试
$url=‘http://bbs.chinaunix.net/zhuanti/1041/httpyoujizhongqingqiu_1041558.shtml‘;
$http=new Http($url);
echo $http->get();
// print_r($http);

?>

 

socket变成发送GET请求

标签:

原文地址:http://www.cnblogs.com/lzzhuany/p/4842159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!