在python中,模拟http客户端发送get和post请求,主要用httplib模块的功能。
1、python发送GET请求
我在本地建立一个测试环境,test.php的内容就是输出一句话:
1
|
echo 'Old friends and old wines are best.' ; |
python发送get请求代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/usr/bin/env python #coding=utf8 import httplib httpClient = None try : httpClient = httplib.HTTPConnection( 'localhost' , 80 , timeout = 30 ) httpClient.request( 'GET' , '/test.php' ) #response是HTTPResponse对象 response = httpClient.getresponse() print response.status print response.reason print response.read() except Exception, e: print e finally : if httpClient: httpClient.close() |
上面代码中使用了finally来保证即使出错的时候也能关闭httpClient。运行这个程序,在我的电脑上输出结果如下:
2、python发送POST请求
修改test.php内容,打印出$_POST数组:
1
|
var_dump( $_POST ); |
python发起post请求代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/usr/bin/env python #coding=utf8 import httplib, urllib httpClient = None try : params = urllib.urlencode({ 'name' : 'tom' , 'age' : 22 }) headers = { "Content-type" : "application/x-www-form-urlencoded" , "Accept" : "text/plain" } httpClient = httplib.HTTPConnection( "localhost" , 80 , timeout = 30 ) httpClient.request( "POST" , "/test.php" , params, headers) response = httpClient.getresponse() print response.status print response.reason print response.read() print response.getheaders() #获取头信息 except Exception, e: print e finally : if httpClient: httpClient.close() |
运行代码,在我的电脑上输出如下:
友情提示:
在http操作中,有时会需要了解一些http协议的相关内容,可以前往w3c查看:http://www.w3.org/Protocols/rfc2616/rfc2616.html