在Python3.0中使用HTTPServer处理web请求

继昨天发现wsgi在有点问题而无法使用它来处理web请求后,我在官方文档中看到了一个http.server模块,于是转而研究它而非WSGI。这个模块中有两个重要的类,分别为HTTPServer和BaseHTTPRequestHandler,还有两个示例类,SimpleHTTPRequestHandler,CGIHTTPRequestHandler。还有一个测试方法(test),我参考其中的示例类写了一个HelloWorld程序。上代码:

from http.server import HTTPServer,BaseHTTPRequestHandler
import io,shutil

class MyHttpHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        r_str="Hello World"
        enc="UTF-8"
        encoded = ''.join(r_str).encode(enc)
        f = io.BytesIO()
        f.write(encoded)
        f.seek(0)
        self.send_response(200)
        self.send_header("Content-type", "text/html; charset=%s" % enc)
        self.send_header("Content-Length", str(len(encoded)))
        self.end_headers()
        shutil.copyfileobj(f,self.wfile)

httpd=HTTPServer(('',8080),MyHttpHandler)
print("Server started on 127.0.0.1,port 8080.....")
httpd.serve_forever()

 运行代码,成功,浏览器输出正常。

如果将这行代码:

        shutil.copyfileobj(f,self.wfile)

 改为:

        self.wfile.write(r_str)

 就会出现昨天的错误。 TypeError: send() argument 1 must be string or buffer, not str

OK,这个错误到此算是有了一个圆满的结局。

各位对于处理web请求还有什么其他的方法麻烦告诉我。唉,又浪费了上班时间,工作了,呵呵,主业不是python。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值