httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现。
import httplib
conn = httplib.HTTPConnection("google.com") conn.request('get', '/') print conn.getresponse().read() conn.close() httplib.HTTPConnection ( host [ , port [ , strict [ , timeout ]]] )
HTTPConnection类的构造函数,表示一次与服务器之间的交互,即请求/响应。参数host表示服务器主机,如:http://www.csdn.net/;port为端口号,默认值为80; 参数strict的 默认值为false, 表示在无法解析服务器返回的状态行时( status line) (比较典型的状态行如: HTTP/1.0 200 OK ),是否抛BadStatusLine 异常;可选参数timeout 表示超时时间。 HTTPConnection.request ( method , url [ , body [ , headers ]] )
调用request 方法会向服务器发送一次请求,method 表示请求的方法,常用有方法有get 和post ;url 表示请求的资源的url ;body 表示提交到服务器的数据,必须是字符串(如果method 是”post” ,则可以把body 理解为html 表单中的数据);headers 表示请求的http 头。
Httplib模块中还定义了许多常量,如:
FTP同样: req = urllib2.Request('ftp://pythoneye.com')
urlopen返回的应答对象response有两个很有用的方法info()和geturl() values ={'body' : 'test short talk','via':'xxxx'}
data = urllib.urlencode(values) req = urllib2.Request(url, data) get方式:
使用Basic HTTP Authentication:
使用代理ProxyHandler:
或者:
通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生
最后需要注意的就是,当处理URLError和HTTPError的时候,应先处理HTTPError,后处理URLError
HTTPHandler是Openers当中的默认控制器之一,看到这个代码,证实了urllib2是借助于httplib实现的,同时也证实了Openers和Handlers的关系。 |
copy from http://hi.baidu.com/chjj910/blog/item/7db5c24fbc699d19b2de0540.html
python基于http协议编程:httplib,urllib和urllib2(转)
2010-11-11 20:47