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创建文件和追加文件内容实例
Oct 21 Python
numpy中的高维数组转置实例
Apr 17 Python
对python 读取线的shp文件实例详解
Dec 22 Python
python交易记录链的实现过程详解
Jul 03 Python
使用Rasterio读取栅格数据的实例讲解
Nov 26 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
分享一个python的aes加密代码
Dec 22 Python
python 获取域名到期时间的方法步骤
Feb 10 Python
python的变量和简单数字类型详解
Sep 15 Python
用Python生成会跳舞的美女
Jan 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
javascript打印输出json实例
2013/11/11 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
javascript实现表单验证
2016/01/29 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
JS常用算法实现代码
2016/11/14 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
js模块加载方式浅析
2017/08/12 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
Python实现Const详解
2015/01/27 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
python global和nonlocal用法解析
2020/02/03 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
大三学生入党思想汇报
2014/01/02 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
公司档案管理制度
2015/08/05 职场文书
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL