python服务器端收发请求的实现代码


Posted in Python onSeptember 29, 2014

最近学习了python的一些服务器端编程,记录在此。

发送get/post请求

# coding:utf-8
import httplib,urllib #加载模块
#urllib可以打开网站去拿
#res = urllib.urlopen('http://baidu.com');
#print res.headers
#定义需要进行发送的数据   
params = urllib.urlencode({'param':'6'});
#定义一些文件头   
headers = {"Content-Type":"application/x-www-form-urlencoded",
      "Connection":"Keep-Alive",'Content-length':'200'};
#与网站构建一个连接
conn = httplib.HTTPConnection("localhost:8765");
#开始进行数据提交  同时也可以使用get进行
conn.request(method="POST",url="/",body=params,headers=headers);
#返回处理后的数据
response = conn.getresponse();
print response.read()
#判断是否提交成功
if response.status == 200:
  print "发布成功!^_^!";
else:
  print "发布失败\^0^/";
#关闭连接
conn.close();

利用urllib模块可以方便的实现发送http请求.urllib的参考手册

http://docs.python.org/2/library/urllib.html

建立http服务器,处理get,post请求

# coding:utf-8
from BaseHTTPServer import HTTPServer,BaseHTTPRequestHandler
class RequestHandler(BaseHTTPRequestHandler):
  def _writeheaders(self):
    print self.path
    print self.headers
    self.send_response(200);
    self.send_header('Content-type','text/html');
    self.end_headers()
  def do_Head(self):
    self._writeheaders()
  def do_GET(self):
    self._writeheaders()
    self.wfile.write("""<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
<p>this is get!</p>
</body>
</html>"""+str(self.headers))
  def do_POST(self):
    self._writeheaders()
    length = self.headers.getheader('content-length');
    nbytes = int(length)
    data = self.rfile.read(nbytes)
    self.wfile.write("""<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
<p>this is put!</p>
</body>
</html>"""+str(self.headers)+str(self.command)+str(self.headers.dict)+data)
addr = ('',8765)
server = HTTPServer(addr,RequestHandler)
server.serve_forever()

注意这里,python把response的消息体记录在了rfile中。BaseHpptServer没有实现do_POST方法,需要自己重写。之后我们新建类RequestHandler,继承自 baseHTTPServer 重写do_POST方法,读出rfile的内容即可。
但是要注意,发送端必须指定content-length.若不指定,程序就会卡在rfile.read()上,不知道读取多少。

参考手册 http://docs.python.org/2/library/basehttpserver.html

Python 相关文章推荐
Python列表list数组array用法实例解析
Oct 28 Python
Python实现将绝对URL替换成相对URL的方法
Jun 28 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
深入理解Python3中的http.client模块
Mar 29 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
Django2 连接MySQL及model测试实例分析
Dec 10 Python
Python SSL证书验证问题解决方案
Jan 13 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
Python logging模块写入中文出现乱码
May 21 Python
Python爬虫防封ip的一些技巧
Aug 06 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
Nov 17 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 Python
python利用beautifulSoup实现爬虫
Sep 29 #Python
Python中为feedparser设置超时时间避免堵塞
Sep 28 #Python
跟老齐学Python之从格式化表达式到方法
Sep 28 #Python
跟老齐学Python之print详解
Sep 28 #Python
跟老齐学Python之正规地说一句话
Sep 28 #Python
跟老齐学Python之玩转字符串(2)更新篇
Sep 28 #Python
跟老齐学Python之不要红头文件(2)
Sep 28 #Python
You might like
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
php格式化时间戳
2016/12/17 PHP
让焦点自动跳转
2006/07/01 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python 专题四 文件基础知识
2017/03/20 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
鼓舞士气的口号
2014/06/16 职场文书
节能减耗标语
2014/06/21 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
企业2014年度工作总结
2014/12/10 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
毕业生个人总结
2015/02/28 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
离婚案件原告代理词
2015/05/23 职场文书
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python