在另一篇文章中,我发现了这段代码来托管我的本地服务器。我正在使用它从应用程序接收数据。但是,当我收到信息时,我收到以下错误消息:
“发生异常: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()