python用httplib模块发送get和post请求

在python中,模拟http客户端发送get和post请求,主要用httplib模块的功能。

1、python发送GET请求

我在本地建立一个测试环境,python.php的内容就是输出一句话:

1 <?php
2 echo 'python httplib study!'.PHP_EOL;
3 var_dump($_POST);
4 ?>

python发送get请求代码:

01 #!/usr/bin/env python
02 # -*- coding: gbk -*-
03 # -*- coding: utf-8 -*-
04 # Date: 2014/8/19
05 # Created by 独自等待
07 import httplib
08  
09 httpClient = None
10  
11 try:
12     httpClient = httplib.HTTPConnection('localhost'80, timeout=10)
13     httpClient.request('GET''/python.php')
14  
15     # response是HTTPResponse对象
16     response = httpClient.getresponse()
17     print response.status
18     print response.reason
19     print response.read()
20 except Exception, e:
21     print e
22 finally:
23     if httpClient:
24         httpClient.close()

上面代码中使用了finally来保证即使出错的时候也能关闭httpClient。运行这个程序,在我的电脑上输出结果如下:

python用httplib模块发送get和post请求

2、python发送POST请求

修改python.php内容,打印出$_POST数组:

1 <?php
2 echo 'python httplib study!'.PHP_EOL;
3 var_dump($_POST);
4 ?>

python发起post请求代码:

01 #!/usr/bin/env python
02 # -*- coding: gbk -*-
03 # -*- coding: utf-8 -*-
04 # Date: 2014/8/19
05 # Created by 独自等待
07 import urllib, httplib
08  
09 httpClient = None
10 try:
11     params = urllib.urlencode({'name''waitalone.cn''age''5'})
12     headers = {'Content-type''application/x-www-form-urlencoded''Accept''text/plain'}
13     httpClient = httplib.HTTPConnection('localhost'80, timeout=10)
14     httpClient.request('POST''/python.php', params, headers)
15     response = httpClient.getresponse()
16     print response.status
17     print response.reason
18     print response.read()
19     print response.getheaders()
20 except Exception, e:
21     print e
22 finally:
23     if httpClient:
24         httpClient.close()

python用httplib模块发送get和post请求

猜你喜欢

转载自www.cnblogs.com/jiangzhaowei/p/8999901.html