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脚本在Appium库上对移动应用实现自动化测试
Apr 17 Python
Python中的匿名函数使用简介
Apr 27 Python
python中sleep函数用法实例分析
Apr 29 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
Python建立Map写Excel表实例解析
Jan 17 Python
python 矩阵增加一行或一列的实例
Apr 04 Python
Python闭包函数定义与用法分析
Jul 20 Python
Python中创建二维数组
Oct 17 Python
python读取txt文件中特定位置字符的方法
Dec 24 Python
Django中提供的6种缓存方式详解
Aug 05 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
Python实现计算图像RGB均值方式
Jun 04 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
织梦模板标记简介
2007/03/11 PHP
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
jquery 日期分离成年月日的代码
2010/05/14 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
javascript数组排序汇总
2015/07/07 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
Python清空文件并替换内容的实例
2018/10/22 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
人事主管的岗位职责
2013/11/16 职场文书
夏季奶茶店创业计划书
2014/01/16 职场文书
医生进修自我鉴定
2014/01/19 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
社区安全温馨提示语
2015/07/14 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL