我想在python中编写简单的应用程序,他们会使用POST HTTP方法向服务器发送一些文本,然后获取包含一些文本的响应。无法从POST请求获取响应正文python
服务器:
from http.server import *
class MyServer(BaseHTTPRequestHandler):
def do_POST(self):
self.send_response(200)
self.send_header("Content-type","text/plain")
self.end_headers()
print(self.rfile.read().decode("UTF-8"))
self.wfile.write(bytes("TEST RESPONSE", "UTF-8"))
address = ("",8000)
httpd = HTTPServer(address, MyServer)
httpd.serve_forever()
客户:
import http.client
class client:
def __init__(self):
h = self.request("127.0.0.1:8000", "POST", "OH YEA")
resp = h.getresponse()
print(resp.status)
#data = resp.read()
def request(self, host, metoda, strona):
headers = { "Host" : host, "Accept": r"text/plain" }
h = http.client.HTTPConnection(host)
h.request(metoda,"",strona,headers)
return h
a = client()
那么只要行数据= resp.read()保持评论的一切工作正常(以及服务器GET请求打印到控制台体它并发送响应),但是当我尝试读取响应身体服务器不打印请求正文,我不明白,即使我得到响应状态200我不能读取响应身体(以及整个应用程序“挂断”)。我究竟做错了什么?我猜测,服务器的行为与未完成的响应处理有关,但我无法完成它因为我无法得到响应身体。
我的上帝的男人我很喜欢你:)因为http://docs.python.org/2/library/httplib.html我认为内容长度设置为automaticaly。现在它当然有效:)谢谢你:)顺便说一句:圣诞快乐,新年快乐! – user2184057
谢谢:-)我可能对客户端的“Content-Length”有错,您是否尝试过而不手动设置它?我只是看着文档,它应该工作:-)顺便说一句。 [这是Python 3.x的文档](http://docs.python.org/3/library/http.html),你正在阅读2.x版本 – sk1p