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 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
Django学习笔记之ORM基础教程
Mar 27 Python
Python实现的读写json文件功能示例
Jun 05 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
Python实现CAN报文转换工具教程
May 05 Python
在python image 中实现安装中文字体
May 16 Python
Pandas 数据编码的十种方法
Apr 20 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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
使用php4加速网络传输
2006/10/09 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
几行js代码实现自适应
2017/02/24 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
JS实现商品筛选功能
2020/08/19 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
python中global与nonlocal比较
2014/11/21 Python
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
师范生的个人求职信范文
2014/01/04 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
python如何在word中存储本地图片
2021/04/07 Python