我是靠谱客的博主 开心泥猴桃,最近开发中收集的这篇文章主要介绍Python BaseHTTPServer前言一、BaseHTTPServer二、程序框架三、程序实例四、关于https的处理,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
原新浪博客(http://blog.sina.com.cn/billsona)搬迁至此。
文章目录
- 前言
- 一、BaseHTTPServer
- 二、程序框架
- 三、程序实例
- 四、关于https的处理
前言
某项目的性能测试工作,已经接近尾声,借此机会进行一下总结。
这项工作,对我这种编码白痴和技术菜鸟来讲,最大的收获莫过于完成工作的同时,入门了一点点python编程和BaseHTTPServer库的使用。
一、BaseHTTPServer
BaseHTTPServer库是一个非常简单并且容易上手的python基础库。基于该库,用户可以完成很多有用的小工具。
BaseHTTPServer库中主要包含两个类:HTTPServer和BaseHTTPRequestHandler。前者继承SocketServer.TCPServer,主要用于监听用户请求,并把请求转发给应答处理模块。BaseHTTPRequestHandler就是应答处理模块,该类继承SocketServer.StreamRequestHandler,主要对HTTP请求作出应答。BaseHTTPRequestHandler本身无法响应具体的HTTP请求,必须被继承来处理对应的HTTP请求。
二、程序框架
# 导入对应模块
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
# #定义HTTP Server的IP和端口号
SERVER_IP = '10.64.20.52'
PORT_NUMBER = 80
# 创建继承于BaseHTTPRequestHandler的自定义类,用来处理对应的HTTP请求
class myHttpRequestHandler(BaseHTTPRequestHandler):
# 定义处理http get方法的逻辑
def do_GET(self):
# http请求头的处理示例,可以通过http请求头获得一些需要的信息
content_length = int(self.headers.getheader('content-length'))
# 根据需要设计自己的http处理逻辑
content = "xxxxx"
result_code = 200
# 将构造的http响应消息返回给对应的http client
self.send_response(result_code)
self.end_headers()
self.wfile.write(content)
return
# 同http get的处理一样,定义处理http post方法的逻辑,可以引入对应的异常处理机制
def do_POST(self):
try:
print "do some thing"
except IOError:
self.send_error(result_code, "error message")
try:
# 启动HTTP Server监听对应的端口
server = HTTPServer((SERVER_IP, PORT_NUMBER), myHttpRequestHandler)
print 'Httpserver on port ', PORT_NUMBER, ' has been started.'
server.serve_forever()
except KeyboardInterrupt:
# 根据条件关闭http server
print '^C received, web server has been shutdown.'
server.socket.close()
三、程序实例
源代码
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServerSERVER_
IP = '10.64.20.52'
PORT_NUMBER = 80
class myHttpRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
sendReply = False
try:
if self.path.find("plus") >= 0:
content = "You want to do plus"
result_code = 200
sendReply = True
if self.path.find("sub") >= 0:
content = "You want to do sub"
result_code = 200
sendReply = True
if sendReply == True:
print 'your http response content is: ', content
print 'your http response code is: ', result_code
self.send_response(result_code)
self.end_headers()
self.wfile.write(content)
return
except IOError:
self.send_error(result_code, "EEROR: your request is error!!" + self.path)
def do_POST(self):
# get content length of post request.
content_length =int(self.headers.getheader('content-length'))
#get the whole content of post request
postvars =self.rfile.read(content_length)
sendReply =False
try:
#feedback the whole content of the post request.
content = postvars
result_code = 200
sendReply =True
###-----Doing respons to the request.
print'your http response content is: ', content
print 'your http response code is: ', result_code
self.send_response(result_code)
self.end_headers()
self.wfile.write(content)
return
except IOError:
self.send_error(result_code, "EEROR: your request is error!!"+ self.path)
try:
server = HTTPServer((SERVER_IP, PORT_NUMBER), myHttpRequestHandler)
print 'Started httpserver on port ', PORT_NUMBER
server.serve_forever()
except KeyboardInterrupt:
print '^C received, shutting down the web server'
server.socket.close()
运行结果
四、关于https的处理
BaseHTTPServer也可以处理https的请求,只要加入对应的证书即可。
源代码
httpd = BaseHTTPServer.HTTPServer(('10.64.20.52', 443), MyHttpHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile='./server.pem', server_side=True)
httpd.serve_forever()
最后
以上就是开心泥猴桃为你收集整理的Python BaseHTTPServer前言一、BaseHTTPServer二、程序框架三、程序实例四、关于https的处理的全部内容,希望文章能够帮你解决Python BaseHTTPServer前言一、BaseHTTPServer二、程序框架三、程序实例四、关于https的处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复