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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
python实现各进制转换的总结大全
Jun 18 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
Python中的TCP socket写法示例
May 11 Python
django之跨表查询及添加记录的示例代码
Oct 16 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
Tensorflow 多线程设置方式
Feb 06 Python
python文件及目录操作代码汇总
Jul 08 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
Python页面加载的等待方式总结
Feb 28 Python
详解Python函数print用法
Jun 18 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
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
PHP设置进度条的方法
2015/07/08 PHP
php实现json编码的方法
2015/07/30 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
js查找父节点的简单方法
2008/06/28 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python实现学生信息管理系统
2020/04/05 Python
python和shell获取文本内容的方法
2018/06/05 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
python如何获取apk的packagename和activity
2020/01/10 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
校园文化标语
2014/06/18 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
委托书的格式
2014/08/01 职场文书
保险公司演讲稿
2014/09/02 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
小学教师教学随笔
2015/08/14 职场文书
python库sklearn常用操作
2021/08/23 Python
Android实现图片九宫格
2022/06/28 Java/Android