在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()
|
运行代码,在我的电脑上输出如下:


