Leaps/HttpClient 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Leaps/HttpClient 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Leaps/HttpClient 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Leaps/HttpClient 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Leaps/HttpClient 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 PHP
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发网络工具包
开源组织
地区 国产
投 递 者 灵魂架构师
适用人群 未知
收录时间 2015-01-31

软件简介

HttpClient 通过HTTP/HTTPS协议获取数据

安装

"require" : { 
"php" : ">=5.4.0", 
"leaps/httpclient": "1.3.4" 
}

基本使用

这个组件极易使用:

<?php 
//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$response = $HttpClient->get('http://www.baidu.com/'); 
echo $response->getContent();

也可以使用批量获取不同的网页内容:

<?php //Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$response = $HttpClient->get(['http://www.baidu.com/','http://www.qq.com']); 
echo $response->getContent();

设置User Agent

默认情况下,如果是WEB形式使用的本组件,那么UserAgent是取的用户浏览器的,在cli模式下这个值是PHP版本号。

//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$HttpClient->setUserAgent('test'); 
$response = $HttpClient->get('http://www.baidu.com/'); 
echo $response->getContent();

设置cookie内容,$cookie为字符串,多个cookie请用;隔开

//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$HttpClientt->setCookies('a=1;b=a;c[0]=1;c[1]=2'); 
$response = $HttpClient->get('http://www.baidu.com/'); 
echo $response->getContent();

设置代理服务器地址

//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$HttpClient->setHttpProxy('host','port'); 
$response = $HttpClient->get('http://www.baidu.com/'); 
echo $response->getContent();

设置基本认证的用户名和密码

//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$HttpClient->setAuthorization('username','password'); 
$response = $HttpClient->get('http://www.baidu.com/'); 
echo $response->getContent();

设置引用页

//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$HttpClientt->setReferer('http://www.test.com/'); 
$response = $HttpClient->get('http://www.baidu.com/'); 
echo $response->getContent();

设置请求的服务器的IP,这样可避免请求域名时DNS解析

//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
// 这样设置请求页面并不会通过DNS解析获取百度服务器的数据,而是直接请求127.0.0.1(即本机)的服务器的数据 
$HttpClientt->setHostIp('127.0.0.1'); 
$response = $HttpClient->get('http://www.baidu.com/'); 
echo $response->getContent();

设置并发请求时最大列队数量,系统默认为100。

HttpClient是支持并发请求的,详细可查看下面的get()方法。如果同时请求一个服务器,在一瞬间会对被请求服务器造成巨大压力,也会对本服务器增加网络IO压力, 所以这个参数可以控制同时并发的数量上限,当达到上限后,列队将等待执行完毕一个追加一个插入列队。

//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$HttpClientt->setMultiMaxNum(100); 
$response = $HttpClient->get(['http://www.baidu.com/']); 
echo $response->getContent();

设置其它参数

用以弥补HttpClient类中不存在的方法,具体请看具体驱动的方法,比如采用CURL的话,其实就相当于CURL的setOption()方法

//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$HttpClientt->setOption(CURLOPT_TIMEOUT,30); 
$response = $HttpClient->get('http://www.baidu.com/'); 
echo $response->getContent();

get请求

用GET方法请求一个(或多个)页面,这样可以大大缩短API请求时间,并可以设置超时时间,单位:秒 支持并发进程请求,并发请求的特点:比如需要同时请求100个页面,传统的是一个一个载入,假设每个页面需要0.1秒,那么100个页面就需要耗时10秒,而通过并发的方式,100个页面理论上也就是0.1秒就可以同时载入完成了,效率非常高。

单个URL直接返回请求的内容的对象,多个URL则返回以URL为key的数组


//Create an instance 
$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
// 请求单个页面 
echo $HttpClient->get('http://www.baidu.com/',3)->getContent();  
// 请求多个页面 
$urls = array (  
'http://www.baidu.com/',  'http://www.google.com/',      'http://www.sina.com.cn/test.html'); 
// 返回已url为key的数组,注意,前后顺序有可能跟$urls中的不一样 print_r($HttpClient->get($urls));

post请求

用POST方法提交数据,支持多个页面同时请求 // 请求单个页面

高级响应(Response)

$HttpClient = new \Leaps\HttpClient\Adapter\Curl(); 
$response = $HttpClient->get('http://www.baidu.com/');  
//获取响应的文档类型 
echo $response->getContentType();  
//获取响应的文档编码(当响应头和返回的HTML文档中没有编码信息时该方法获取不到正确的编码) 
echo $response->getCharSet();  
//获取响应的文档后缀名,(根据响应的文档类型来匹配后缀名,方便在下载文档后另存) echo $response->getContentSuffix();  
//获取响应的状态码(如200) 
echo $response->getStatusCode();  
//获取原始的响应头 
echo $response->getRawHeader();  
//获取解析过的响应头Key->value形式 
echo $response->getHeaders();  
//获取指定响应头 
echo $response->getHeader($name);  
//获取解析过的Cookie集合,数组形式 
echo $response->getCookies();  
//获取指定的Cookie值 
echo $response->getCookie($name);  
//获取本次请求消耗的时间 
echo $response->getTime()  
//获取响应的内容 
echo $response->getContent();  
//获取HTML文档Head中的title和meta标签数组 
echo $response->getHeadTags();  
//是否是有效的HTTP响应码 
echo $response->isInvalid();  
//是否是成功的响应(响应码为200-300之间视为成功) 
echo $response->isSuccessful();  
//是否是重定向响应(300-400) 
echo $response->isRedirection();  
//是否是客户端错误的响应(400-500) 
echo $response->isClientError();  
//是否是服务端错误的响应(500-600) 
echo $response->isServerError();  
//是否是200 
echo $response->isOk();  
//是否是403 
echo $response->isForbidden();  
//是否是404 
echo $response->isNotFound();  
//是否是201,04,304 
echo $response->isEmpty();
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (3)

加载中
问个问题,模拟登录使用话兼容吗? Leaps/HttpClient
2015/04/06 15:30
回复
举报
怎么安装?不太明白呀~ #Leaps/HttpClient#
2015/04/24 14:35
回复
举报
兼容的php环境一定要大于5.4? #Leaps/HttpClient#
2015/04/27 12:32
回复
举报
更多评论
发表了资讯
2015/05/14 00:00

Leaps/HttpClient 1.4.2 发布,PHP 的 HTTP 客户端

Leaps/HttpClient 1.4.2 发布,本次升级如下: 1、修复Curl模块在发送POST请求时不支持多维数组的问题 Leaps/HttpClient 是一个 PHP 语言写的“多线程" Http 客户端,支持 HTTP/HTTPS 抓取数据,默认使用 Curl 多线程获取数据,在不支持 Curl 的情况下自动使用 socket 在发起请求,支持代理服务器,支持基本的 http 认证。采集好帮手啊!...

2
28
发表了资讯
2015/04/27 00:00

Leaps/HttpClient 1.3.6 发布,PHP HTTP 客户端

Leaps/HttpClient 1.3.6发布,本次升级如下: 1、增加响应中编码的严格判断,防止个别情况下判断失败的问题。 2、完善程序说明文档。 Leaps/HttpClient 是一个 PHP 语言写的“多线程" Http 客户端,支持 HTTP/HTTPS 抓取数据,默认使用 Curl 多线程获取数据,在不支持 Curl 的情况下自动使用 socket 在发起请求,支持代理服务器,支持基本的 http 认证。采集好帮手啊!...

18
40
发表了资讯
2015/04/15 00:00

Leaps/HttpClient 1.3.4 发布,PHP 的 HTTP 客户端

Leaps/HttpClient 1.3.2发布,本次升级如下: 1、增加单元测试,并全都测试通过。 2、增加基本的HTTP认证登陆 3、增加代理Http服务器。抓数据被封IP再也不怕了。 4、修复CURL上传的问题,PHP5.6+以上版本不适用老方法上传。 Leaps/HttpClient 是一个PHP语言写的“多线程"Http客户端,支持HTTP/HTTPS抓取数据,默认使用Curl多线程获取数据,在不支持Curl的情况下自动使用socket在发起请求,支持代理服务器,支持基本的http认证。...

9
49
发表了资讯
2015/04/13 00:00

Leaps/HttpClient 1.3.2 发布,PHP 的 HTTP 客户端

Leaps/HttpClient 1.3.2发布,本次升级如下: 1、在获取响应内容时增加获取原始响应头的功能。 2、增加各种IsXXX方法来判断响应状态。 3、自动解析响应头。 4、解析响应的内容类型和编码。 5、增加获取响应头方法 同原生get_headers(),无需使用原生方法获取支持各种请求形式GET/POST等,直接处理获取可减少一次请求,参考原生C的实现。 6、增加获取metatags方法,可获取标题、关键词、页面描述等TAG;同PHP原生get_meta_tags(),同...

2
22
发表了资讯
2015/03/21 00:00

Leaps/HttpClient 1.2.4 发布,PHP 的 HTTP 客户端

Leaps/HttpClient 更新到1.2.4, Leaps/HttpClient 是一个PHP语言写的“多线程"Http客户端,支持HTTP/HTTPS抓取数据,默认使用Curl多线程获取数据,在不支持Curl的情况下自动使用socket在发起请求,支持代理服务器,支持基本的http认证。采集好帮手啊! 本次升级主要目的是: 1、兼容yii2组件化加载。 2、新增PHP扩展版本。采集的时候可使用相同的接口使用强大的C语言来提升效率。 3、扩展版本原生并发请求支持。...

3
37
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2019/12/18 17:27

commons-httpclient 和 httpclient 区别

今天在看项目的pom的时候,发现里面有这么两个包依赖。 <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> 发现项目里面用到它们的地方也差不多,都是用来处理...

0
0
发表了博客
2013/06/27 13:43

httpclient

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。 编辑摘要 目录 [隐藏 ] 1 简介 2 功能介绍 3 基本功能 4 常见问题 5 代理器 6 认证 httpclient - 简介 HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来...

0
3
发表了博客
2019/05/07 14:15

Httpclient

![](https://oscimg.oschina.net/oscnet/5dd490f2b13f2eef9604c1d8ae3e8972b37.jpg) ------------   今天给大家分享的是Httpclient,如有不足,敬请指教。 # 一、Httpclient简介 ## 1.1 什么是httpclient - HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等) - ...

0
4
发表了博客
2018/12/08 16:02

httpClient

package com.x'x'x.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http...

0
0
2014/04/22 23:00

HttpClient

HttpClient 学习整理 http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html http://wallimn.iteye.com/blog/540566 http://www.cnblogs.com/wxlzhizu/archive/2009/12/09/1620005.html http://blog.csdn.net/angussl/article/details/5557738...

0
0
2017/10/19 00:21

 Httpclient

###重要的类 HttpClientContext HttpClientGenerator 这个类是HttpClient产生器 SSL http://blog.csdn.net/xiaoxian8023/article/details/49865335

0
0
发表了博客
2012/05/11 17:32

HttpClient_4 用法 由HttpClient_3 升级到 HttpClient_4 必看

HttpClient程序包是一个实现了 HTTP 协议的客户端编程工具包,要想熟练的掌握它,必须熟悉 HTTP协议。一个最简单的调用如下: import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpUriRequest; import org.apac...

0
8
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2015/04/27 17:23

Leaps/HttpClient可以抓取Https的网站吗?

RT

2
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
3 评论
80 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部