Python实现简单HTTP Server

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()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值