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实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
Django在win10下的安装并创建工程
Nov 20 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
python 接收处理外带的参数方法
Dec 03 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
如何使用Python抓取网页tag操作
Feb 14 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
Mar 18 Python
如何用python绘制雷达图
Apr 24 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
Python入门之基础语法详解
May 11 Python
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
9个比较实用的php代码片段
2016/03/15 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
详解Document.Cookie
2015/12/25 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Python同步遍历多个列表的示例
2019/02/19 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
python入门之基础语法学习笔记
2020/02/08 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
初中生个人学习的自我评价
2013/12/04 职场文书
经销商年会策划方案
2014/05/29 职场文书
经济贸易系求职信
2014/08/04 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
社会实践活动报告
2015/02/05 职场文书
伏羲庙导游词
2015/02/09 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
电影红河谷观后感
2015/06/11 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python