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中随机函数random用法实例
Apr 30 Python
python冒泡排序简单实现方法
Jul 09 Python
python3.5 tkinter实现页面跳转
Jan 30 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
python多线程并发及测试框架案例
Oct 15 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
利用python调用摄像头的实例分析
Jun 07 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
PHP程序员编程注意事项
2008/04/10 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
javascript读取RSS数据
2007/01/20 Javascript
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
JsChart组件使用详解
2018/03/04 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python批量发送post请求的实现代码
2018/05/05 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Django CBV类的用法详解
2019/07/26 Python
Python中six模块基础用法
2019/12/08 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
应届生护士求职信
2013/11/01 职场文书
英语专业推荐信
2013/11/16 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
总裁办公室主任职责
2014/01/02 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
个人年度总结报告
2015/03/09 职场文书