0

在另一篇文章中,我发现了这段代码来托管我的本地服务器。我正在使用它从应用程序接收数据。但是,当我收到信息时,我收到以下错误消息:

“发生异常:TypeError(注意:显示了完整的异常跟踪,但执行暂停在:do_POST)write() 参数必须是 str,而不是字节。” 在第 16 行,在 do_POST

“错误:根:内容类型:应用程序/json;charset=utf-8”来自登录终端

我不确定这是从哪里来的,我应该在哪里解码字节。如果可能的话,我想接收数据并将它们存储在变量中。

import socketserver
import http.server
import logging
import cgi

PORT = 8000

class ServerHandler(http.server.SimpleHTTPRequestHandler):

def do_GET(self):
    logging.error(self.headers)
    http.server.SimpleHTTPRequestHandler.do_GET(self)

def do_POST(self):
    logging.error(self.headers)
    form = cgi.FieldStorage(
        fp=self.rfile,
        headers=self.headers,
        environ={'REQUEST_METHOD':'POST',
                 'CONTENT_TYPE':self.headers['Content-Type'],
                 })
    for item in form.list:
        logging.error(item)
    http.server.SimpleHTTPRequestHandler.do_GET(self)

    with open("data.txt", "w") as file:
        for key in form.keys(): 
            file.write(str(form.getvalue(str(key))) + ",")

Handler = ServerHandler

httpd = socketserver.TCPServer(("", PORT), Handler)

print("serving at port", PORT)
httpd.serve_forever()
4

0 回答 0