最近学习了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("""

this is get!

"""+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("""

this is put!

"""+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服务器端收发请求的实现代码

本文地址: http://www.cppcns.com/jiaoben/python/114375.html

python连接服务器代码_python服务器端收发请求的实现代码相关推荐

  1. python tcp服务器模板_python socket之tcp服务器与客户端示例

    Python中用socket编写服务器和客户端... 先说下我的问题,本来预想是,客户端连上服务器,然后向服务器发送信息服务器端代码 while 1: buf = s.recv(1024) 改成 wh ...

  2. python连接池框架_Python中的连接池是非常重要的!神级程序员详解!

    概述 连接池的作用就是为了提高性能,将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对Server端进行访问.这样 省略了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁 ...

  3. python连接oracle数据库_Python连接oracle数据库 例子一

    step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...

  4. python连接sql数据库_python连接sql server数据库实现增删改查

    简述 python连接微软的sql server数据库用的第三方模块叫做pymssql(document:http://www.pymssql.org/en/stable/index.html).在官 ...

  5. python 写入第二列_python读写Excel表格的实例代码(简单实用)

    这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.需要先安装两个库:pip install xlrd.pip ...

  6. python ftp服务器限速_python实现ftp服务器

    import socket import hashlib importstructimport os import settingclass FtpClient(object): features= ...

  7. python贪吃蛇程序_Python 实现 贪吃蛇大作战 代码分享

    感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核.媒体们除了之前竞相追捧<Pokemon Go>热闹了一把,似乎也听不到什么声音了.直到最近几天,突然听见好几人 ...

  8. python输出星号等腰三角形_python打印直角三角形与等腰三角形实例代码

    python打印直角三角形与等腰三角形实例代码 前言 本文通过示例给大家详细介绍了关于python打印三角形的相关,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1.直角三角形 #i ...

  9. python测试程序的qps和响应时间代码_python性能测试,请求QPS测试

    QPS = (1000ms/平均响应时间ms)*服务并行数量 #!/user/bin/env python #coding=utf-8 import requests import datetime ...

最新文章

  1. torch The “freeze_support()” line can be omitted if the programis not going to be frozen to produce
  2. puppet自动化运维之exec资源
  3. 项目需求分析与建议-NABCD模型
  4. 九度oj 1523 从上往下打印二叉树
  5. 梅州有学java的地方吗,梅州java工资水平,梅州java工资很高吗,梅州java工资底薪能到多少...
  6. redis php 性能测试工具,redis性能测试与客户端连接详解
  7. mds算法 java_对OAF开发中的MDS的初步研究(转)
  8. matlab运行没有图片,simulink模型运行时没报错,但scope没有图像,什么原因?
  9. 计算机组成和体系结构-Flynn分类法
  10. vue获取微信登陆权限_vue微信授权登录
  11. du -c 单位 linux,Linux命令 du
  12. 神经网络机器翻译技术
  13. Linux:HDMI驅動之HPD
  14. 0基础学习pythonTASK6——If 、For、While语句
  15. 程序员年底好找工作吗?
  16. UVA 11426 GCD - Extreme (II) (欧拉函数)
  17. STM32 BLDC无刷直流电机 HALL霍尔硬件接口 程序
  18. GPON PLOAM消息
  19. 【题解】吉首大学第六届新星杯暨程序设计大赛(新生网络同步赛).2016
  20. Mac 下安装 go

热门文章

  1. mysql空密码php_WAMP中如何修改mysql默认空密码_MySQL
  2. outguess秘钥加密--[BJDCTF 2nd]圣火昭昭-y1ng
  3. java converter转换器_springboot 自定义转换器(converter)
  4. Python创建一个循环链表、双向循环链表
  5. python常用8大算法
  6. Python3中 对local和nonlocal 关键字的改善认识(新手向)
  7. javascript技术教程蔡敏_程序员都必掌握的前端教程之JavaScript基础教程(上)
  8. IText实现url转pdf, 解决中文字体问题
  9. sqlserver yml配置文件
  10. Redis RDB、AOF持久化详解