httplibrary和xmlhttprequest openlibrary的区别

在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
标签:至少1个,最多5个
是一个PHP的HTTP类库。相对于cURL等类库来说,它具有简单易用且友好的API,且不依赖于cURL。它支持HEAD、 GET、 POST、 PUT、 DELETE和PATCH等方法,基本能满足任何形式的HTTP请求。
Requests不依赖于任何PHP标准库外的扩展,唯一的要求就是需要PHP5.2+的版本。但是如果PHP的cURL可用,Requests会优先使用它,否则会使用socket。
安装和使用
通过Composer安装
"require": {
"rmccue/requests": "&=1.0"
"autoload": {
"psr-0": {"Requests": "library/"}
可以使用Composer的加载器:
phpinclude('/path/to/composer/vendor/autoload.php');
也可以使用Requests自带的:
phpinclude('/path/to/library/Requests.php');
Requests::register_autoloader();
php$response = Requests::get('http://httpbin.org/get');
php$response = Requests::post('http://httpbin.org/post');
需要传数据的话,可以使用第三个参数:
php$data = array('key1' =& 'value1', 'key2' =& 'value2');
$response = Requests::post('http://httpbin.org/post', array(), $data);
如果需要传原始数据的话,第三个参数请传字符串。
其他请求方法都大同小异:
php$response = Requests::put('http://httpbin.org/put');
$response = Requests::delete('http://httpbin.org/delete');
$response = Requests::patch('http://httpbin.org/patch', array('If-Match' =& 'e0023aa4e'));
$response = Requests::head('http://httpbin.org/headers');
需要注意的是equests::patch()方法的第二个参数为必传。
Requests::request()方法
看API文档,你会发现这些方法接受的参数几乎一样:$url,$headers,$data(只有POST、PUT和PATCH有),$options。事实上它们只是对Requests::request()方法进行了一次封装:
* Send a GET request
public static function get($url, $headers = array(), $options = array()) {
return self::request($url, $headers, null, self::GET, $options);
* Send a HEAD request
public static function head($url, $headers = array(), $options = array()) {
return self::request($url, $headers, null, self::HEAD, $options);
* Send a DELETE request
public static function delete($url, $headers = array(), $options = array()) {
return self::request($url, $headers, null, self::DELETE, $options);
* Send a POST request
public static function post($url, $headers = array(), $data = array(), $options = array()) {
return self::request($url, $headers, $data, self::POST, $options);
* Send a PUT request
public static function put($url, $headers = array(), $data = array(), $options = array()) {
return self::request($url, $headers, $data, self::PUT, $options);
$header允许我们自定义请求头,例如POST方法的话,我们通常需要指定Content-Type,使服务器知道我们正在发送的的数据是什么格式:
php$url = '/some/endpoint';
$headers = array('Content-Type' =& 'application/json');
$data = array('some' =& 'data');
$response = Requests::post($url, $headers, json_encode($data));
$options允许我们对请求进行配置,例如超时时间:
php$options = array(
'timeout' =& 5
$response = Requests::get('https://httpbin.org/', array(), $options);
更多的选项配置请看:
Requests里所有的请求方法(HEAD、 GET、 POST、 PUT、 DELETE和PATCH)返回的都是一个Requests_Response对象,这个对象包含了响应的各种信息:
$body:响应体。
$raw:原始的HTTP响应数据。
$headers:响应头。
$status_code:状态码。
$success:标识请求是否成功。
$redirects:请求的重定向次数。
$url:请求的URL。
$history:请求的历史记录。
$cookies:cookie信息。
更多Requests_Response的信息请看:
Session处理
当你需要对同一网站发出多个请求,那么Requests_Session对象可以帮到轻易的设置一些默认参数:
php$url = '/';
$header = array('X-ContactAuthor' =& 'rmccue');
$data = array();
$options = array('useragent' =& 'My-Awesome-App');
$session = new Requests_Session($url, $header, $data, $options);
$response = $session-&get('/zen');
Requests_Session的构造函数接受url、headers、data和options这4个参数,顺序跟Requests::request()方法一致。同时你也可以通过访问属性的方式去修改options参数:
php// 设置option属性
$session-&useragent = 'My-Awesome-App';
// 跟上面的作用一致
$session-&options['useragent'] = 'My-Awesome-App';
更多Requests_Session的信息请看:
Requests会默认帮忙处理HTTPS请求,就跟在浏览器访问HTTPS网站一样:
php$response = Requests::get('https://httpbin.org/');
但是如果你想使用其他的证书或者自签证书,你可以指定证书文件(PEM格式):
php$options = array(
'verify' =& '/path/to/cacert.pem'
$response = Requests::get('https://httpbin.org/', array(), $options);
如果你想禁用HTTPS的验证,可以通过设置options:'verify' =& false。
HTTP基本验证
HTTP基本验证功能可以通过options的auth实现:
php$options = array(
'auth' =& array('user', 'password')
Requests::get('http://httpbin.org/basic-auth/user/password', array(), $options);
代理可以通过options的proxy实现:
php$options = array(
'proxy' =& '127.0.0.1:3128'
Requests::get('http://httpbin.org/ip', array(), $options);
如果代理需要验证:
php$options = array(
'proxy' =& array( '127.0.0.1:3128', 'my_username', 'my_password' )
Requests::get('http://httpbin.org/ip', array(), $options);
通过Requests的钩子系统,我们可以通过注册自己的钩子去扩展Requests的功能:
php$hooks = new Requests_Hooks();
$hooks-&register('requests.after_request', 'mycallback');
$request = Requests::get('http://httpbin.org/get', array(), array('hooks' =& $hooks));
Request提供的钩子请看:
自定义验证
通过实现Requests_Auth接口,我们可以为请求添加自定义的验证。假设服务器会检查HTTP请求里的Hotdog请求头的值是不是为Yummy。我们先实现我们的验证类:
phpclass MySoftware_Auth_Hotdog implements Requests_Auth {
protected $
public function __construct($password) {
$this-&password = $
public function register(Requests_Hooks &$hooks) {
$hooks-&register('requests.before_request', array(&$this, 'before_request'));
public function before_request(&$url, &$headers, &$data, &$type, &$options) {
$headers['Hotdog'] = $this-&
可以看到,类实现了Requests_Auth接口,同时代码实现也用到了钩子。下面我们通过options的auth去调用我们的自定义验证:
php$options = array(
'auth' =& new MySoftware_Auth_Hotdog('yummy')
$response = Requests::get('http://hotdogbin.org/admin', array(), $options);
Why Requests?
文章开始提到了Requests的一些优点,这个官网有个专门的页面进行详细的介绍,同时还提到了Requests跟其他类似类库的对比。通过这个对比,大家对Requests会有进一步的认识,同时也科普下还有哪些HTTP请求相关的类库。
10 收藏&&|&&42
你可能感兴趣的文章
4 收藏,1.1k
1 收藏,687
本作品采用 署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
安装用了下$response = \Requests::get('http://httpbin.org/ip');
var_dump($response-&body); nice
安装用了下
$response = \Requests::get('http://httpbin.org/ip');
var_dump($response-&body);` nice
为什么不使用ws-http呢?
为什么不使用ws-http呢? /toohamster/ws-http
不能失败重试哈~~~,失败直接报500是不是不符合实际业务呢~
不能失败重试哈~~~,失败直接报500是不是不符合实际业务呢~
为什么 autoload要用 psr-0这个鬼
为什么 autoload要用 psr-0这个鬼
分享到微博?
我要该,理由是:查看: 1981|回复: 8
请问下,winhttp和 网页_访问有什么区别
阅读权限30
结帖率: (1/4)
因为需要模人工&&爬取网页,网页好像在里面增加了一些数据 没有加载那些数据直接调用接口的话会被判定软件,不能被网页发现了&&等网页加载完毕在取数据的话又非常慢效率低,请问这两个有什么不同啊
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至
可获得加分喔。友情提醒:本版被采纳的主题可在
帖子申请荣誉值,获得 1点 荣誉值,荣誉值可兑换终身vip用户组哦。快捷通道: →
阅读权限30
结帖率: (1/4)
您可以选择打赏方式支持他
阅读权限140
签到天数: 18 天结帖率: (17/17)
最大的区别应该是在cookiesh上吧。
您可以选择打赏方式支持他
阅读权限30
结帖率: (1/4)
最大的区别应该是在cookiesh上吧。
此话怎解 希望能劳烦你一分钟 大概说下
您可以选择打赏方式支持他
阅读权限160
签到天数: 1 天结帖率: (3/3)
wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest区别
(出处: 乐易编程网)
你可以仔细看一下
简单来讲,网页_访问是和浏览器共享cookie的
而网页_访问_对象 是有独立cookie的,适合多线程等操作的、各类换号的操作的
您可以选择打赏方式支持他
阅读权限140
结帖率: (28/28)
winhttp是直接读取,不会携带协yi头,cookies等,不能post,网页_访问()会自动完善协yi头(精易模版有默认)等等,可以自定义提交参数
您可以选择打赏方式支持他
阅读权限140
签到天数: 18 天结帖率: (17/17)
精易里的网页_访问是WinInet的方式(api) 这个调用的时候会共享本地cook
winhttP是对象操作 cook需自行处理。个人觉得没多大的差异 如果在批量操作(多线程)方面后者肯定更稳定适合一些。
您可以选择打赏方式支持他
阅读权限154
签到天数: 7 天结帖率: (4/4)
你这个问题和用winnet还是winhttp无关。(这2个区别主要在一个cookies。)
这种限制要么是有某个get或者post请求的检测类似心跳包,可以看我之前发的企业邮箱帖子。
要么你需要的数据是通过JS或者ajax方法传回,所以请求不到数据。
…………../′ˉ/)…......….. (\ˉ`\
…………/….//……….. …\\….\
………../….//………… ….\\….\
…../′ˉ/…./′ˉ\……...…../ˉ `\…..\ˉ`\
.././…/…./…./.|_……_| .\….\….\…\.\..
(.(….(….(…./.)..)..(..(. \….)….)….)......)
.\…………….\/…/….\. ..\/……………./
..\…………….. /……..\………………/
….\…………..(………. ..)…………../
……\………….\……… ../…………./
您可以选择打赏方式支持他
阅读权限154
签到天数: 7 天结帖率: (4/4)
要详细了解2个区别可以看微软官方给的
/zh-cn/library/windows/desktop/hh227298(v=vs.85).aspx
您可以选择打赏方式支持他
精易论坛 - 有你更精彩 /1
10.24 祖国你好
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
防范网络诈骗,远离网络犯罪
违法和不良信息举报电话,QQ: ,,邮箱:@
Powered by
粤公网安备 2509:51 提问
robot framework Httplibrary
使用Httplibrary 测试post json数据,服务器端request.Content-type is NULL
Create Http Context
Set Request Body
username="aaa"
Set Request Header
'Content-type'
'application/json'
Content-Length: 0
Host: 10.66.18.80:5000
Content-Type:
Accept-Encoding: identity
结果是取数据根本取不到
按赞数排序
Robot Framework
简介特性RIDE
编辑本段简介
Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试......答案就在这里:----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
其他相关推荐}

我要回帖

更多关于 http request header 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信