|
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的关系。 |
Feedback
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import socks
import httplib2
body = [
('tbUserName', 'xxx'),
('tbPassword', 'xxx'),
] headers = {'Content-type': 'application/x-www-form-urlencoded',
'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17'}
#proxy = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'http://xxx.xxx.com', 8080) http = httplib2.Http(
# proxy_info = proxy
) response, content = http.request(url, 'GET', headers=headers,
#connection_type='http',
) # set cookie headers = {'Cookie': response['set-cookie']}
response, content = http.request(
url, 'POST', headers=headers, body=urllib.urlencode(body)
) print type(content)
try:
content = unicode(content)
self.view.setHtml(content)
except:
return
return |
|
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的关系。 |