파이썬에서 간단한 애플리케이션을 작성하려고합니다. 파이썬은 POST HTTP 메소드를 사용하여 서버에 텍스트를 보내고 일부 텍스트를 포함하는 응답을받습니다.POST 요청 파이썬에서 응답 본문을 가져올 수 없습니다.
서버 :
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이 나더라도 응답 본문 (전체 응용 프로그램이 "끊어짐")을 읽을 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 그 서버의 behevior 추측은 끝나지 않은 응답 처리와 관련이 있지만 응답 본문을 가져올 수 없다는 것을 끝내지 못합니다.
내 하나님 남자 내가 사랑하는거야 나중에 http://docs.python.org/2/library/httplib.html의 사촌 나는 Content-Length가 automaticaly라고 생각했다. 이제는 물론 작품 :) :) 정말 고마워요 :) Btw : 메리 크리스마스와 새해 복 많이 받으세요 !!! – user2184057
감사합니다 :-) 나는 클라이언트에서'Content-Length'에 대해 잘못되었을 수도 있습니다. 수동으로 설정하지 않고 시도 했습니까? 난 그냥 설명서를 쳐다 보면서, 그것은 작동합니다 :-) Btw. [이것은 Python 3.x의 문서입니다] (http://docs.python.org/3/library/http.html), 2.x 버전을 읽고있었습니다. – sk1p