`

myhttp类 php使用fsockopen实现稳定的HTTP连接(转)

 
阅读更多

网上找到一个用fsockopen函数实现http请求的类,感觉不错。

<?php
    /*
    CatSeven myHttp Vesion 0.1
 
    ======CopyRight======
    Home:http://www.myw3.cn/myDevise/myHttp/
    Design:Miao Qiyuan[miaoqiyuan.cn]
    Downloads:http://downloads.myw3.cn/file=myDevise/myHttp/0.1
    */
 
    class myHttp{
        public $Method,$URI,$SendDate;
        public $HttpServerPort,$HttpServer,$HttpServerIP;
        public $Err,$ErrStr;
        public $timeout;
        public $responseText;
 
        public function __construct($uri='/',$method='get',$query='',$server='localhost',$port='80',$serverip='',$timeout=30){
            $this->URI=$uri;
            $this->Method=$method;
            $this->SendDate=$query;
            $this->HttpServer=$server;
            $this->HttpServerPort=$port;
            $this->HttpServerIP=$serverip;
            if(is_numeric($timeout))$this->timeout=$timeout;
        }
 
        public function send(){
            $this->Method=strtoupper($this->Method);
            if($this->HttpServerIP=="")$this->HttpServerIP = $this->HttpServer;
            if($this->Method=="GET" && strstr($this->URI,"?")==0)$this->URI=$this->URI."?".$this->SendDate;
            $sock = fsockopen($this->HttpServerIP,$this->HttpServerPort,$errno,$errstr,$this->timeout);
            if(!$sock){
                $this->ErrStr=$errstr;
                $this->Err=$errno;
                die("无法打开".$this->HttpServerIP.":".$this->HttpServerPort);
            }
            fwrite($sock, $this->Method." ".$this->URI." HTTP/1.0\r\n");
            fwrite($sock, "Host: ".$this->HttpServer."\r\n");
            if($this->Method=="POST"){
                fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");
                fwrite($sock, "Content-length: ".strlen($this->SendDate) . "\r\n");
                fwrite($sock, "Accept: */*\r\n");
                fwrite($sock, "\r\n");
                fwrite($sock, $this->SendDate."\r\n");
                fwrite($sock, "\r\n");
                fwrite($sock, "Referer: http://www.myw3.cn/myDevise/myHttp/");
            }
            fwrite($sock, "Connection: Close\r\n\r\n");
            $headers = "";
            while ($str = trim(fgets($sock,4096)))
                $headers .= "$str\n";
 
            $body = "";
            while (!feof($sock))
                $body .= fgets($sock, 4096);
            fclose($sock);
            $this->responseText=$body;
        }
    }
?>
 
输入参数的方法有两种,在创建类的时候同时输入参数和先创建类,慢慢输入参数。相关例子分别为test,test2,该类同时支持get,post的方法。
<?php
    include("myHttp.class.php");
    $test = new myHttp();
    $test -> URI = "/index.php";
    $test -> HttpServer = "www.miaoqiyuan.cn";
    $test -> Method = "post";
    $test -> SendDate ="s=myhttp";
    $test -> send();
    echo $test -> responseText;
 
    $test2 = new myHttp('/index.php','get','s=myhttp','www.miaoqiyuan.cn','80','',30);
    $test2 -> send();
    echo $test2 -> responseText;
?>
 
分享到:
评论

相关推荐

    《--程序--》MyHTTP.rar_ vc 网络_HTTP协议_vc http通信_网络通信_通信协议

    《--程序--》MyHTTP.rar 是一个包含VC++实现的HTTP协议通信源码的压缩包,专门针对网络通信和HTTP协议编程。这个资源包括了服务器端和客户端的实现,意味着你可以通过此代码理解如何在VC++环境中构建基本的HTTP...

    MyHttp

    标题 "MyHttp" 提供的信息不多,但我们可以假设这是一个与HTTP相关的开源项目或者个人实现的HTTP客户端库。在Java编程语言中,HTTP是用于在Web上进行数据交换的基础协议,因此MyHttp可能是一个用于发送HTTP请求和...

    VC通过Http协议Get或Post方式与WebService通信,解析返回的Json

    本资源是一个封装类,采用异步方式解决了Wininet不能设置超时的问题,当前异步采用C++11线程库及同步方式,可修改为MFC工作线程后在VS2012以下版本使用。JSON解析库采用JSONCPP。调用方式参考: CWininetHttp MyHttp...

    HTTP协议实现

    8. **源代码组织**:`myhttp`文件可能是项目的主要源代码文件,可能包含了HTTP协议实现的类、函数和其他相关逻辑。 总的来说,这个项目是一个动手实现HTTP协议的实践,涵盖了网络编程、C++语言特性、操作系统接口等...

    myhttp:提供基于mina 的不依赖web容器对http协的支持

    《深入理解myhttp:基于Mina的HTTP协议实现》 在IT行业中,Web服务的开发与部署通常是基于HTTP协议的,而大多数实现依赖于Web容器,如Tomcat、Jetty等。然而,对于某些特定场景,如轻量级服务、嵌入式系统或者对...

    老罗Android视频开发教程 android之http协议编程代码

    "myhttp"可能是一个自定义的HTTP客户端类,封装了HTTP请求的通用逻辑,方便在多个地方复用。在实际项目中,创建一个自己的HTTP工具类可以更好地管理和控制网络请求,包括错误处理、超时设置、缓存策略等。 "java_...

    基于http协议的客户端下载模块(C语言实现)

    10. **myhttp文件分析**:压缩包中的“myhttp”文件可能包含了源代码、头文件、测试脚本或其他相关资源。通过阅读和分析这些文件,你可以深入了解项目的具体实现细节和设计思路。 总的来说,这个项目提供了学习...

    MyHttp:自定义http框架

    这是一个http的网络框架,使用方法如下: ① 导入demo中的httplib这个moudle。 ② 配置url,在httplib这个moudle下面的res/xml/url.xml中配置需要调用的url及相关参数,如下所示: 其中Key是查找这个url的关键字;...

    java http方式抓取网页信息 JAVAIO

    本知识点主要探讨如何使用Java实现HTTP请求来抓取网页信息,并利用Java IO流将其保存到本地文件。首先,我们需要理解HTTP协议的基本概念,它是客户端与服务器之间交互的一种协议,通常用于获取HTML页面。 在Java中...

    QT5 HTTP下载文件到指定目录

    本教程将详细讲解如何使用QT5来实现HTTP文件下载并将其保存到指定的目录。 首先,你需要包含必要的QT模块。在QT5中,我们可以使用`QNetworkAccessManager`类来处理HTTP请求,`QNetworkReply`类来接收服务器的响应,...

    MyHttp:菜鸟学习使用

    myhttp Java菜鸟学习网站,展示最简单的Demo,入门使用

    安卓之使用http-get协议从服务器获取数据

    在安卓开发中,从服务器获取数据是常见的任务,通常我们使用HTTP协议来实现这一功能。本文将详细讲解如何在Android应用中使用HTTP GET方法从服务器获取数据,以"myhttp"本地搭建的项目资源为例。 首先,理解HTTP ...

    由c语言编写的适用于linux的简单http服务器

    1、上传文件到 linux 2、解压文件(tar -xvf http.tar) ...5、启动服务 ./myhttp start 7、开放 80 端口(firewall-cmd --zone=public --add-port=80/tcp --permanent) 8、本级目录下的 cgi、html 等文件都可以访问

    angular2实现统一的http请求头方法

    创建一个名为`myHttp`的类,继承自`Http`类。在这个类中,我们可以设置默认的请求头,并在每个请求方法中使用这些默认头。例如,在`get`方法中,首先创建一个新的请求选项`optionBuf`,包含了默认头和参数。然后使用...

    SmartHTTP 简易HttpRequest类(ASP)

    以下是SmartHTTP类的一些关键特性及使用方法: 1. **基本调用**: 最简单的使用方式是直接通过`SmartHttp()`函数来发送GET请求。例如: ```vbscript response.write SmartHttp("http://www.baidu.com/").send()....

    简单浏览器

    在MFC中,可以使用CInternetSession和CHttpConnection类来实现网络通信。myHttp和MyHttp可能包含了实现这些功能的源代码。 6. **URL解析和请求**:浏览器需要能够解析输入的URL,并根据协议、主机名和路径构造HTTP...

    使用MUI框架构建App请求http接口实例代码

    在LoginServlet.java文件中,我们使用了HttpServlet类来处理请求,并使用PrintWriter对象来写入响应结果。在doPost方法中,我们首先设置了请求和响应的字符编码,然后获取了请求参数,最后根据参数的值来决定响应的...

    json的Jar包

    `myHttp.java`看起来是一个源代码文件,可能包含了使用上述库进行HTTP请求或者其他功能的实现。它可能利用了`commons-httpclient-3.1.jar`来发送HTTP请求,并通过其他库如`json-lib`来处理返回的JSON数据。 在实际...

    Qt5开发及实例-CH1006.rar,Qt5简单网页浏览器的代码

    新建Qt Widgets Application,名称为“myHTTP”,类名为“MainWindow”,基类保持“QMainWindow”不变。完成后先在“myHTTP.pro”文件中添加语句“QT+=network”,并保存该文件。进入设计模式,向界面上拖入一个Text...

    androdid课程表

    - **模拟HTTP请求**:使用自定义的`BasicHttp`类实现HTTP请求功能。 - **数据存储**: 利用`SharedPreferences`存储用户偏好设置。 - **界面展示**: - 使用`Button`和`TextView`等组件构建用户界面。 - 采用`...

Global site tag (gtag.js) - Google Analytics