使用httplib模块来制作Python下HTTP客户端的方法


Posted in Python onJune 19, 2015

httplib 是 python中http 协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互。httplib的内容不是很多,也比较简单。以下是一个非常简单的例子,使用httplib获取google首页的html:
 

#coding=gbk 
import httplib 
conn = httplib.HTTPConnection("www.google.cn") 
conn.request('get', '/') 
print conn.getresponse().read() 
conn.close()

下面详细介绍httplib提供的常用类型和方法。
httplib.HTTPConnection ( host [ , port [ , strict [ , timeout ]]] )

HTTPConnection类的构造函数,表示一次与服务器之间的交互,即请求/响应。参数host表示服务器主机,如:www.csdn.net;port为端口号,默认值为80; 参数strict的 默认值为false, 表示在无法解析服务器返回的状态行时( status line) (比较典型的状态行如: HTTP/1.0 200 OK ),是否抛BadStatusLine 异常;可选参数timeout 表示超时时间。
HTTPConnection提供的方法:
HTTPConnection.request ( method , url [ , body [ , headers ]] )

调用request 方法会向服务器发送一次请求,method 表示请求的方法,常用有方法有get 和post ;url 表示请求的资源的url ;body 表示提交到服务器的数据,必须是字符串(如果method 是”post” ,则可以把body 理解为html 表单中的数据);headers 表示请求的http 头。
HTTPConnection.getresponse ()

获取Http 响应。返回的对象是HTTPResponse 的实例,关于HTTPResponse 在下面 会讲解。
HTTPConnection.connect ()

连接到Http 服务器。
HTTPConnection.close ()

关闭与服务器的连接。
HTTPConnection.set_debuglevel ( level )

设置高度的级别。参数level 的默认值为0 ,表示不输出任何调试信息。
httplib.HTTPResponse

HTTPResponse表示服务器对客户端请求的响应。往往通过调用HTTPConnection.getresponse()来创建,它有如下方法和属性:
HTTPResponse.read([amt])

获取响应的消息体。如果请求的是一个普通的网页,那么该方法返回的是页面的html。可选参数amt表示从响应流中读取指定字节的数据。
HTTPResponse.getheader(name[, default])

获取响应头。Name表示头域(header field)名,可选参数default在头域名不存在的情况下作为默认值返回。
HTTPResponse.getheaders()

以列表的形式返回所有的头信息。
HTTPResponse.msg

获取所有的响应头信息。
HTTPResponse.version

获取服务器所使用的http协议版本。11表示http/1.1;10表示http/1.0。
HTTPResponse.status

获取响应的状态码。如:200表示请求成功。
HTTPResponse.reason

返回服务器处理请求的结果说明。一般为”OK”

下面通过一个例子来熟悉HTTPResponse中的方法:
 

#coding=gbk 
import httplib 
conn = httplib.HTTPConnection("www.g.cn", 80, False) 
conn.request('get', '/', headers = {"Host": "www.google.cn", 
                  "User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5", 
                  "Accept": "text/plain"}) 
res = conn.getresponse() 
print 'version:', res.version 
print 'reason:', res.reason 
print 'status:', res.status 
print 'msg:', res.msg 
print 'headers:', res.getheaders() 
#html 
#print '/n' + '-' * 50 + '/n' 
#print res.read() 
conn.close()

这是我用firebug跟踪到响应头:

使用httplib模块来制作Python下HTTP客户端的方法

Httplib模块中还定义了许多常量,如:

Httplib. HTTP_PORT 的值为80,表示默认的端口号为80;

Httplib.OK 的值为200,表示请求成功返回;

Httplib. NOT_FOUND 的值为404,表示请求的资源不存在;

可以通过httplib.responses 查询相关变量的含义,如:

Print httplib.responses[httplib.NOT_FOUND]    #not found

Python 相关文章推荐
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
python开发之字符串string操作方法实例详解
Nov 12 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
Python logging模块用法示例
Aug 28 Python
Python 处理图片像素点的实例
Jan 08 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
Python高并发和多线程有什么关系
Nov 14 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 Python
举例详解Python中threading模块的几个常用方法
Jun 18 #Python
Python的time模块中的常用方法整理
Jun 18 #Python
Python抽象类的新写法
Jun 18 #Python
Python实现的彩票机选器实例
Jun 17 #Python
Python基于Tkinter实现的记事本实例
Jun 17 #Python
Python基于Tkinter的HelloWorld入门实例
Jun 17 #Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 #Python
You might like
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
Vue中props的使用详解
2018/06/15 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Python Flask框架扩展操作示例
2019/05/03 Python
python绘制彩虹图
2019/12/16 Python
python实现堆排序的实例讲解
2020/02/21 Python
python实现微信打飞机游戏
2020/03/24 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
Ajxa常见问题都有哪些
2014/03/26 面试题
幼儿园三八妇女节活动方案
2014/03/11 职场文书
班级口号大全
2014/06/09 职场文书
七年级作文之环保作文
2019/10/17 职场文书