[英]Python HTTPServer: Reponse not getting sent (Looking to return JSON)
嘿,我正在使用 Python 的基本服务器工作,现在我正在测试如何返回 JSON 数据,但现在我无法返回 Z0ECD11C1D7A287401D148A23BBD7A2F8 数据。
这就是我试图将 JSON 发回给客户的方式:
response= {
"name":'junior',
"name":'junior'
}
self.send_response(200)
self.wfile.write(bytes(json.dumps(response, ensure_ascii=False), 'utf-8'))
self.send_header('Content-type', 'application/json')
self.end_headers()
下面是整个源代码:
import ast
import json
from http.server import HTTPServer, BaseHTTPRequestHandler
from http import HTTPStatus
class ServiceHandler(BaseHTTPRequestHandler):
def do_GET(self):
print(self.path)
def do_POST(self):
content_len = int(self.headers.get('Content-Length'))
post_body = self.rfile.read(content_len)
body = ast.literal_eval(post_body.decode("utf-8"))
response= {
"name":'junior',
"name":'junior'
}
self.send_response(200)
self.wfile.write(bytes(json.dumps(response, ensure_ascii=False), 'utf-8'))
self.send_header('Content-type', 'application/json')
self.end_headers()
#Server Initialization
server = HTTPServer(('127.0.0.1',8080), ServiceHandler)
server.serve_forever()
我可以就如何返回 JSON 数据获得一些帮助吗
在正文之前发送标题,如下所示:
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(bytes(json.dumps(response, ensure_ascii=False), 'utf-8'))
标头必须在数据之前发送,但您如何要求 POST 请求? 这是一个仅使用 GET 的示例:
import json
from http.server import HTTPServer, BaseHTTPRequestHandler
class ServiceHandler(BaseHTTPRequestHandler):
def do_GET(self):
response= {
"name":'junior',
"name2":'junior'
}
self.send_response(200)
self.send_header('Content-type', 'application/json')
data = json.dumps(response).encode()
self.end_headers()
self.wfile.write(json.dumps(response).encode())
server = HTTPServer(('',8080), ServiceHandler)
server.serve_forever()
>>> print(requests.get('http://127.0.0.1:8080').json())
{'name': 'junior', 'name2': 'junior'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.