`
daimon
  • 浏览: 13180 次
  • 性别: 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功能允许开发者直接操作网络通信,从而实现自定义的HTTP请求,包括POST请求。通过创建Socket,建立连接,构造并发送请求,接收响应,以及关闭连接,我们可以构建出高效的网络应用程序。虽然...

    用php实现socket

    下面将详细介绍如何用PHP实现Socket以及相关的知识点。 1. **PHP Socket基本概念** PHP中的Socket功能是通过`socket`扩展提供的,它允许开发者直接操作网络层,进行低级别的网络通信。Socket分为服务器端和客户端...

    PHP利用AJAX实现SOCKET通讯

    调用`send`方法发送SOCKET请求: ```javascript xhr.send(); ``` ### 4. 完整示例 为了实现数据的双向通信,可以在客户端使用WebSocket库,如`socket.io`,配合PHP的SOCKET服务器。在纯AJAX情况下,由于HTTP的限制...

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

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

    php5 实现socket 通信

    以上介绍了如何使用 PHP5 实现基于 TCP 协议的 Socket 通信。包括服务器端和客户端的创建、连接、数据交互以及关闭等过程。通过这些基础的步骤,可以构建简单的网络应用或进行进一步的功能扩展。

    PHP用SOCKET实现客户端与服务器端通信

    本文将深入探讨如何使用PHP的SOCKET函数来实现客户端与服务器端之间的通信。 首先,我们要理解什么是SOCKET。SOCKET是操作系统提供的一个接口,它允许应用程序通过网络进行通信。在TCP/IP协议栈中,SOCKET可以看作...

    通过socket发送GET请求查询IP归属地,Json格式数据解析

    本文将深入探讨如何使用socket发送GET请求来查询IP归属地,并解析返回的Json格式数据。首先,我们要理解socket的基本概念。 Socket,通常称为套接字,是进程间通信(IPC)的一种方式,特别是在网络环境下。在TCP/IP...

    PHP socket 构造POST与GET

    总结,PHP Socket提供了一种底层的方式来处理网络通信,允许开发者直接构造和发送HTTP请求。无论是GET还是POST,都可以通过创建Socket、连接服务器、编组请求和接收响应来实现。同时,PHP的Socket类提供了面向对象的...

    VC Socket GET_POST发送HTTP请求示例

    本文将深入探讨使用VC(Visual C++)进行Socket编程,特别是如何通过GET和POST方法发送HTTP请求。HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从Web服务器获取或提交数据。 首先,理解Socket...

    SOCKET+PHP发送GET、POST请求

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

    php socket聊天室

    一旦有客户端请求连接,我们可以用`socket_accept()`接收这个连接,并通过`socket_write()`和`socket_read()`来发送和接收数据。 在“php socket聊天室”的场景中,服务器端通常会维护一个Socket监听连接,当新的...

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

    在PHP中,发送HTTP请求的方式有很多种,其中一种是通过socket编程来实现。下面将详细介绍如何使用PHP的socket函数以及fsockopen、stream_socket_client和stream_context_create等方法发送HTTP请求。 1. **基本的...

    HP用SOCKET实现(客户端---服务端)

    标题:HP用SOCKET实现(客户端---服务端) 描述:HP用SOCKET实现(客户端---服务端)通信 本文将深入解析如何利用PHP中的Socket编程技术实现客户端与服务端之间的通信,通过分析提供的代码示例,我们将理解其工作原理、...

    用php的socket跟flash的socket通信

    本文档详细介绍了如何使用 PHP 和 Flash 实现 Socket 通信。通过以上介绍,我们可以了解到: 1. **PHP 的 Socket 编程基础**:包括创建、绑定、监听、接受连接、读取/写入数据及关闭连接等操作。 2. **Flash 的 ...

    PHP版SOCKET模拟提交POST消息(源码)

    通过分析`postn.php`,我们可以更深入地了解如何在实际项目中使用PHP的SOCKET功能进行POST请求,这对于那些需要绕过标准HTTP库(如cURL)或者在低级别进行网络交互的场景非常有用。同时,这也是一种学习网络编程和...

    php_socket基础编程

    ### PHP Socket 基础编程知识点详解 #### 标题:PHP Socket 基础编程 此标题指的是一本适合初学...通过这些基础知识的学习,初学者可以快速掌握如何使用 PHP 实现 Socket 编程,并为后续更高级的应用打下坚实的基础。

    php socket编程实例详解

    - **监听连接请求**:使用`socket_listen()`函数使Socket进入监听状态,等待客户端的连接请求。 - **接受连接**:当有客户端连接时,使用`socket_accept()`函数接收连接请求,并返回一个新的Socket用于与客户端通信...

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

    在现代网络开发中,使用PHP进行Socket编程是一种常见的需求,尤其在模拟HTTP请求方面。本文将深入探讨如何使用PHP的Socket编程来模拟HTTP的GET和POST请求。我们将从一个PHP类开始,该类能够构建HTTP请求并处理响应,...

    运行php socket

    1. **创建Web服务**:你可以用PHP Socket创建自定义的Web服务,这些服务可能不依赖于HTTP协议,而是基于更底层的TCP/IP或者UDP协议。 2. **实时通信**:例如在线聊天、游戏等应用,Socket提供了一种实时传输数据的...

Global site tag (gtag.js) - Google Analytics