`
phyeas
  • 浏览: 164705 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

在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。

分享到:
评论

相关推荐

    一款Python基于VUE3.0的高颜值卡密发卡系统源码.zip

    在这个系统中,Python可能使用了如Flask或Django这样的Web框架,负责处理HTTP请求,数据库操作,以及与Vue.js前端进行数据交互。 Vue.js 3.0是这个系统前端的核心,它提供了组件化开发模式,使得开发者可以将UI拆分...

    Ubuntu系统Daphne + Nginx部署Python Django项目精讲【含代码说明】

    在本教程中,我们将深入探讨如何在Ubuntu系统上使用Daphne和Nginx部署Python Django项目,同时利用Supervisor进行进程管理。首先,Django 3.0开始支持ASGI(Asynchronous Server Gateway Interface)应用程序,使得...

    Go Web 编程

    《GoWeb编程》采用了CC BY-SA 3.0许可证,意味着其他人可以在遵守相应条件的情况下自由地使用和修改内容,代码则遵循 BSD 3-Clause 许可证。 ### 结语 《GoWeb编程》不仅是一本关于Go语言Web开发的书籍,更是一个...

    3.0 XML-RPC 官方示例+源码+官网地址资料.rar

    - 在3.0版本中,XML-RPC库通常提供客户端和服务器端的API,方便开发者创建和处理XML-RPC请求。例如,在Python中,有`xmlrpc.client`(客户端)和`xmlrpc.server`(服务器端)模块。 - 服务器端需要定义可以被远程...

    BI大屏3.0和4.0和5.0代码.zip

    - 在 BI 大屏项目中,Koa 服务器通常用于处理 HTTP 请求,对接后端数据源,如数据库或API接口,为前端提供数据服务。开发者可能会用到 Koa 中间件来处理路由、认证、错误处理等任务。 - Koa 的可扩展性很强,可以...

    Web开发技术习题集样本.doc

    - Web3.0,也被称为语义Web,强调机器理解和处理信息,物联网、大数据和云计算是其特征。 - Web4.0则进一步扩展了智能互联,如人工智能和增强现实等技术的应用。 4. **Web服务(Web Service)**: - Web服务允许...

    uof资料统计学习笔记

    在IT行业中,尤其是在Web开发领域,理解和掌握"UOF资料统计学习笔记"中的知识点是至关重要的。UOF可能指的是某个特定的技术或者框架,但由于信息有限,这里我们将基于Web开发的相关内容进行深入探讨。 首先,我们要...

    H3C CAS REST API接口

    对于POST和PUT请求,通常在请求体中传递JSON格式的数据来指定操作参数。 H3C CAS REST API接口提供了多种功能,例如: 1. 虚拟机管理:创建、查询、启动、停止、重启和销毁虚拟机。 2. 网络资源管理:创建、修改和...

    基于Selenium自动化测试框架的数据驱动技术研究及应用.pdf

    在Selenium 3.0中,WebDriver被引入取代了Selenium RC,其Client与Server之间通过HTTP请求进行通信。 pandas是一个开源的Python库,专注于数据分析。它提供了高效的数据结构和数据分析工具,特别适合进行数据的读写...

    xml的几种方式的操作集锦大全

    XML请求和响应包含在HTTP报文中,使得不同系统间的通信变得标准化和可理解。 总结,XML操作涵盖了从解析、创建到查询、验证的多个方面。掌握这些技术,可以帮助我们更好地处理XML数据,实现数据的有效管理和传输。...

    tomcat百度地图下载器

    在Linux环境下,你可能需要使用curl或wget命令来发送HTTP请求,或者使用编程语言(如Java、Python、JavaScript等)编写代码来实现地图下载功能。如果你使用Java,可以利用HttpURLConnection或者Apache HttpClient库...

    2021-2022计算机二级等级考试试题及答案No.15399.docx

    12. ASP.NET的六个内置对象包括Response(响应)、Request(请求)、Server(服务器)、Application(应用程序)、Session(会话)和Cookie,用于处理HTTP请求和响应。 13. Python代码`ss = list(set("jzzszyj"))`将...

    Intergalactic-Post

    运行"RunLocalServer.py"之前,确保你已经安装了必要的依赖库,例如 Flask 或 HTTPServer,这些都是常见的Python HTTP服务器实现。一旦服务器启动,你可以在浏览器中输入指定的URL(通常是localhost加上端口号)来...

    详解Django3中直接添加Websockets方式

    你可以定义一个装饰器来识别WebSocket请求,并在视图中使用`await`关键字处理异步操作。 同时,别忘了在urls.py中配置WebSocket的URL,这样Django就能正确地路由WebSocket请求。通常,你会使用一个特定的路径前缀,...

    iss安装文件包

    9. **Web部署工具**:微软的Web Deploy(以前称为Web Deploy 3.0)是一款用于发布和更新IIS网站的工具,它可以自动化处理文件同步、数据库迁移等复杂任务。 10. **最新版本**:IIS随Windows Server版本更新而发展,...

    flask-apps:我可以在其中存储烧瓶应用程序的巨大文件夹

    烧瓶应用 我可以在其中存储烧瓶模板应用程序的巨大文件夹。 概述 ... 是Flask之上的框架,可自动处理使用OpenAPI(以前称为Swagger)定义的HTTP请求,同时支持该规范的v2.0和v3.0。 是一个ORM / OD

    Apache Tomcat v9.0.4

    它能够处理大量并发请求,确保Web应用在高流量环境下依然能正常运行。这得益于其优秀的线程管理和内存管理策略。 4. **API扩展**:Tomcat 支持通过简单的API进行扩展,允许开发者自定义服务器的行为,例如添加新的...

Global site tag (gtag.js) - Google Analytics