SimpleHTTPRequestHandler覆盖do_GET

AJ.*_*AJ. 6 python

我想扩展SimpleHTTPRequestHandler并覆盖默认行为do_GET().我从自定义处理程序返回一个字符串,但客户端没有收到响应.

这是我的处理程序类:

DUMMY_RESPONSE = """Content-type: text/html

<html>
<head>
<title>Python Test</title>
</head>

<body>
Test page...success.
</body>
</html>
"""

class MyHandler(CGIHTTPRequestHandler):

    def __init__(self,req,client_addr,server):
        CGIHTTPRequestHandler.__init__(self,req,client_addr,server)

    def do_GET(self):
        return DUMMY_RESPONSE
Run Code Online (Sandbox Code Playgroud)

为了使这项工作正常,我必须改变什么?

Rom*_*huk 11

像(未经测试的代码):

def do_GET(self):
    self.send_response(200)
    self.send_header("Content-type", "text/html")
    self.send_header("Content-length", len(DUMMY_RESPONSE))
    self.end_headers()
    self.wfile.write(DUMMY_RESPONSE)
Run Code Online (Sandbox Code Playgroud)


Sam*_*ler 5

上面的答案有效,但您可能会TypeError: a bytes-like object is required, not 'str'在这条线上:self.wfile.write(DUMMY_RESPONSE)。你需要这样做:self.wfile.write(str.encode(DUMMY_RESPONSE))