当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

Leaps/HttpClient

PHP的HTTP客户端
授权协议 Apache
开发语言 PHP
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 蒋默
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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();
 相关资料
  • 问题 你想创建一个 HTTP 客户端。 解决方案 在这个方法中,我们将使用 node.js's HTTP 库。我们将从一个简单的客户端 GET 请求示例返回计算机的外部 IP 。 关于 GET http = require 'http' http.get { host: 'www.google.com' }, (res) -> console.log res.statusCode get

  • HTTP客户端用于抓取网页HTML源码。 用法 自定义HTTP Header 获取抓取到的HTML 捕获HTTP异常 获取HTTP响应头等信息 自定义HTTP客户端 QueuryList推荐使用GuzzleHttp来作为HTTP客户端,它功能强大、使用简单、支持异步和并发请求,GuzzleHttp使用文档:http://guzzle-cn.readthedocs.io/zh_CN/latest/

  • http 客户端 http 客户端 源码/* * File : httpclient.c * * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-07-20 flybreak

  • 这可能是基于意见的问题。 我想使用古斯HTTP客户端,因为许多人认为它比Symfony HTTP客户端更好,Cloudflare在其PHP API中也使用古斯HTTP客户端。但是,我使用Symfony HTTP客户端和古斯HTTP客户端执行了一个简单的测试。结果表明,古斯HTTP客户端比Symfony HTTP客户端慢得多。 我想知道/理解为什么拥有如此著名的声誉的HTTP客户端缺乏速度。还是我做

  • Infura Http 客户端 web3j Infura 模块提供了一个Infura Http 客户端(InfuraHttpService),它为Infura特定的Infura-Ethereum-Preferred-Client提供支持。这允许你指定是否希望geth或Parity客户端响应你的请求。你可以像普通的HTTPClient一样创建客户端: Web3j web3 = Web3j.build

  • =Leaps简单php开发 for You != 现在PHP开发框架非常多,一个开发框架优秀与否与它有多少特性没有太大的关系。特性也不能告诉你框架代码的质量如何、性能如何、细节处理的如何、安全性如何。判断一个框架的唯一办法是在使用中了解它。实践出真知嘛。 ==主要特性如下:==     * 基于MVC体系     * 多种据库驱动,支持多数据库,简单的切换多数据库。     * 超低耦合    

  • 从Java使用弹性搜索的最佳实践是什么?例如,可以使用REST API轻松找到留档和逐个查询删除功能的示例。传输客户端Java情况并非如此。 在哪里可以找到Java Transport Client的使用示例 Java Transport Client是否通过REST API覆盖了整个ElasticSearch功能,比如HTTP客户端

  • 我有点困惑如何创建超文本传输协议-kit WebSocket客户端。在网站上有一个如何创建WebSocket服务器的例子,创建客户端可能是微不足道的,但我似乎不能得到它的权利。有没有不关注Javascript客户端的例子? P. S.在这个问题中进行了一些讨论,但仅举了一些例子,并指示超文本传输协议-kit现在支持WebSocket客户端。