转自:http://www.01happy.com/python-httplib-get-and-post/
在python中,模拟http客户端发送get和post请求,主要用httplib模块的功能。
1、python发送GET请求
我在本地建立一个测试环境,test.php的内容就是输出一句话:
1 | echo 'Old friends and old wines are best.' ; |
python发送get请求代码:
123456789101112131415161718192021 | #!/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请求代码:
123456789101112131415161718192021222324 | #!/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() |
运行代码,在我的电脑上输出如下: