正在阅读:

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

30,737

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

1、python发送GET请求

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

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

python发送get请求代码:

#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
# Date: 2014/8/19
# Created by 独自等待
# 博客 http://www.waitalone.cn/
import httplib

httpClient = None

try:
    httpClient = httplib.HTTPConnection('localhost', 80, timeout=10)
    httpClient.request('GET', '/python.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。运行这个程序,在我的电脑上输出结果如下:

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

2、python发送POST请求

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

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

python发起post请求代码:

#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
# Date: 2014/8/19
# Created by 独自等待
# 博客 http://www.waitalone.cn/
import urllib, httplib

httpClient = None
try:
    params = urllib.urlencode({'name': 'waitalone.cn', 'age': '5'})
    headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'}
    httpClient = httplib.HTTPConnection('localhost', 80, timeout=10)
    httpClient.request('POST', '/python.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()

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

友情提示:

在http操作中,有时会需要了解一些http协议的相关内容,可以前往w3c查看:http://www.w3.org/Protocols/rfc2616/rfc2616.html

转自:http://www.01happy.com/python-httplib-get-and-post/

目前有:1条访客评论

  1. 商学院
    2017-01-13 11:59

    来访了

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌