您的位置:首页 > 理论基础 > 计算机网络

Python实现简单HTTP Server

2015-12-18 16:57 519 查看
Python 实现HTTP Server比较简单。下面的代码是一种方式。

实现HTTP Client,可以考虑使用requests组件,很好用。http://docs.python-requests.org/en/latest/

#!/usr/bin/python
#coding:utf-8

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
import urllib
import json
import sys
import io
import shutil

reload(sys)
#sys.setdefaultencoding('utf8')
#sys.setdefaultencoding('gb18030')
sys.setdefaultencoding('gbk')

success_message={}
success_message['response'] = {"is_success":"true"}
success_message_body= json.dumps(success_message, encoding='gbk', ensure_ascii=False).encode('gbk')

failure_message={}
failure_message["response"]={"is_success":"false","err_code":"400","err_msg":"类型不能为空".encode("gbk")}
failure_message_body= json.dumps(failure_message, encoding='gbk', ensure_ascii=False).encode('gbk')

class MyRequestHandler(BaseHTTPRequestHandler):

def do_process(self,c):
content=""

#指定返回编码
enc='gbk'
#enc='gb18030'

content=failure_message_body

f=io.BytesIO()
f.write(content)
f.seek(0)

self.send_response(200)
self.send_header("Content-type","application/json;charset=%s" % enc)
self.send_header("Content-Length",str(len(content)))
self.end_headers()

shutil.copyfileobj(f,self.wfile)

def do_GET(self):
print 'GET request received'
self.do_process("get")

def do_POST(self):
print 'POST request received'
self.do_process("post")

if __name__ == '__main__':
PORT = 2000

print "serving at port", PORT
print 'Starting server, use <Ctrl-C> to stop'
server = HTTPServer(("", PORT), MyRequestHandler)

server.serve_forever()



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: