繁体   English   中英

Python HTTPServer:未发送响应(希望返回 JSON)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM