`
daimon
  • 浏览: 12796 次
  • 性别: Icon_minigender_1
  • 来自: 陕西。西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

用PHP的Socket实现HTTP请求

阅读更多
最近HTTP远程访问的程序写得多了,主要接触的是.NET类库里的WebHttpRequest类和Microsoft.XMLHTTP这个通用的对象,有了这些方便的类,我们可以通过C#,ASP,Javascript来模拟Web客户端访问其他的Web页面。但是今天想用PHP实现一下类似的功能,却一时找不到方向了,于是只能自己“丰衣足食”了。

目前,PHP里面还没有类似于HttpRequest的类,不过在官方在线文档中找到了这么一个HttpRequest Class的页面,不过也只是提及了此功能目前可能只有在CVS版本中存在,无奈...

要实现HTTP访问无非就是用Socket发送一个请求,然后读取返回信息。于是我就用Socket写了一个HttpRequest的类,当然也可以用fsockopen()这个函数来实现,不过两个的区别不是很大,具体代码在附件里,自己看咯。

<?php /**  * Network: HTTP request object  * Author: Li HouYu (Karajan Lee), Shanghai, China.  */  class HttpRequest { var $sHostAdd; var $sUri; var $iPort; var $sRequestHeader; var $sResponse; function HttpRequest($sUrl) { $sPatternUrlPart = '/http:\/\/([a-z-\.0-9]+)(:(\d+)){0,1}(.*)/i'; $arMatchUrlPart = array(); preg_match($sPatternUrlPart, $sUrl, $arMatchUrlPart); $this->sHostAdd = gethostbyname($arMatchUrlPart[1]); if (empty($arMatchUrlPart[4])) { $this->sUri = '/'; } else { $this->sUri = $arMatchUrlPart[4]; } if (empty($arMatchUrlPart[3])) { $this->iPort = 80; } else { $this->iPort = $arMatchUrlPart[3]; } $this->addRequestHeader('Host: '.$arMatchUrlPart[1]); $this->addRequestHeader('Connection: Close'); } function addRequestHeader($sHeader) { $this->sRequestHeader .= trim($sHeader)."\r\n"; } function sendRequest($sMethod = 'GET', $sPostData = '') { $sRequest = $sMethod." ".$this->sUri." HTTP/1.1\r\n"; $sRequest .= $this->sRequestHeader; if ($sMethod == 'POST') { $sRequest .= "Content-Type: application/x-www-form-urlencoded\r\n"; $sRequest .= "Content-Length: ".strlen($sPostData)."\r\n"; $sRequest .= "\r\n"; $sRequest .= $sPostData."\r\n"; } $sRequest .= "\r\n"; $sockHttp = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (!$sockHttp) { die('socket_create() failed!'); } $resSockHttp = socket_connect($sockHttp, $this->sHostAdd, $this->iPort); if (!$resSockHttp) { die('socket_connect() failed!'); } socket_write($sockHttp, $sRequest, strlen($sRequest)); $this->sResponse = ''; while ($sRead = socket_read($sockHttp, 4096)) { $this->sResponse .= $sRead; } socket_close($sockHttp); } function getResponse() { return $this->sResponse; } function getResponseBody() { $sPatternSeperate = '/\r\n\r\n/'; $arMatchResponsePart = preg_split($sPatternSeperate, $this->sResponse, 2); return $arMatchResponsePart[1]; } function getResponseHead() { $sPatternSeperate = '/\r\n\r\n/'; $arMatchResponsePart = preg_split($sPatternSeperate, $this->sResponse, 2); return $arMatchResponsePart[0]; } } ?>
分享到:
评论
1 楼 pdreamer 2008-03-27  
有snoopy
http://sourceforge.net/projects/snoopy/

相关推荐

    php的socket发送post请求示例

    php的socket发送post请求示例

    Socket实现Http上传文件的代码

    该代码实现了对于socket发送http请求上传文件的封装,且上传了一个模拟服务端的php代码,在 test目录,首先需要自己下载PHPStudy安装好,然后将下载下来的资源中test目录的文件复制到php目录下www目录中,启动...

    PHP使用socket发送HTTP请求的方法

    主要介绍了PHP使用socket发送HTTP请求的方法,结合实例形式分析了PHP使用socket发送http请求的常用技巧,需要的朋友可以参考下

    SOCKET+PHP发送GET、POST请求

    【初级】利用 SOCKET+PHP 实现发送GET/POST请求,学习HTTP协议,论坛灌水

    PHP利用AJAX实现SOCKET通讯

    PHP利用AJAX技术实现SOCKET通讯,并将返回结果显示在界面。

    PHP socket 模拟POST 请求实例代码

    我们用到最多的模拟POST请求几乎都是使用php curl来实现了,没考虑到PHP socket也可以实现,今天看到朋友写了一文章,下面我来给大家分享一下PHP socket模拟POST请求实例。 以前模拟post请求俺都用PHP curl扩展实现...

    使用PHP Socket 编程模拟Http post和get请求

    这里给大家分享一段使用PHP Socket 编程模拟Http post和get请求的代码,非常的实用,结尾部分我们再讨论下php模拟http请求的几种方法。 复制代码 代码如下: &lt;?php /**  * 使用PHP Socket 编程模拟Http post和...

    php 利用socket发送GET,POST请求的实例代码

     今天给大家带来的是如何利用socket发送GET,POST请求。我借用燕十八老师封装好的一个Http类给进行说明。  在日常编程中相信很多人和我一样大部分时间是利用浏览器向服务器提出GET,POST请求,那么可否利用其它...

    PHP的Socket通信

    socket通常叫做‘套接字’,用于描述IP地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或者应答忘了请求。socket既不是程序,也不是协议,其只是操作系统提供的通信层的一组抽象API

    php 利用socket发送HTTP请求(GET,POST)

    作为php程序员一定会接触http协议,也只有深入了解http协议,编程水平才会更进一步。最近我一直在学习php的关于http的编程,许多东西恍然大悟,受益匪浅。希望分享给大家。本文需要有一定http基础的开发者阅读。

    PHP Socket开发基础

    整理的PHP Socket开发基础, PHP运用 Berkley的socket库来建立它的连接。socket只不过是一个数据结构。你运用这个socket数据结构去开始一个客户端和服务器之间的会话。这个服务器是一直在监听准备产生一个新的会话。...

    socket_test.zip_socket php_测试socket 读写

    socket接口测试,使用php读取socket接口的数据,通过php传递请求方法和请求参数,得到返回结果

    php实现与python进行socket通信的方法示例

    主要介绍了php实现与python进行socket通信的方法,结合实例形式分析了php使用自定义类发送socket请求数据及Python接收socket数据并处理请求等相关操作技巧,需要的朋友可以参考下

    PHP异步调用socket实现代码

    浏览器和服务器之间只一种面向无连接的HTTP协议进行通讯的,面向无连接的程序的特点是客户端请求服务端,服务端根据请求输出相应的程序,不能保持持久连接

    PHP实现模仿socket请求返回页面的方法

    主要介绍了PHP实现模仿socket请求返回页面的方法,是socket通信非常实用的技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics