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实现pdf文档转txt的方法示例
Jan 19 Python
Python使用random.shuffle()打乱列表顺序的方法
Nov 08 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
python让函数不返回结果的方法
Jun 22 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
python实现自定义日志的具体方法
May 28 Python
python四种出行路线规划的实现
Jun 23 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
js opener的使用详解
2014/01/11 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
jQuery操作cookie
2016/08/08 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
python实现的汉诺塔算法示例
2019/10/23 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
全球立体声:World Wide Stereo
2018/09/29 全球购物
Shell如何接收变量输入
2012/09/24 面试题
事业单位个人应聘自荐信
2013/09/21 职场文书
酒吧员工的岗位职责
2013/11/26 职场文书
大二自我鉴定
2014/01/31 职场文书
函授自我鉴定范文
2014/02/06 职场文书
高中生家长寄语大全
2014/04/03 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
村官2015年度工作总结
2015/10/14 职场文书
教师网络培训心得体会
2016/01/09 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript