我使用python 2.6创建可以POST XML数据的HTTPS客户端。到目前为止它能够POST到我也写过的HTTP服务器。问题在于,当我尝试从响应中返回状态和原因时,它是不正确的。
HTTPS服务器应返回具有HTTP 202状态的空响应。当我使用curl POST它时,它会正确地返回我期望的内容。 HTTPS python客户端获取HTTP 200和空原因。就好像我正在解析的响应对象没有正确或没有从正确的请求创建。
import httplib
def https_client(client_host, client_port, client_key, client_cert, xml_file, client_path)
headers = {"Content-type" : "application/xml"}
http_post = httplib.HTTPSConnection(client_host, client_port, client_key, client_cert)
http_post.request("POST", "/" + client_path, xml_file, headers)
response1 = http_post.getresponse()
print response1.status, response1.reason
控制台返回:
200
服务器正在接收POST,就像我之前提到的那样,当我使用curl时,我可以获得202状态和接受的原因。我已经看到了关于阅读响应和/或关闭连接的一些内容,但我还没有找到需要这样做的示例。
答案 0 :(得分:0)
真正的问题是服务器而不是客户端。发现连接在客户端预期之前终止。这是因为服务器在发送响应之前没有读取传入请求的主体。我不需要因为任何原因阅读它,所以我忽略了这样做。
def do_POST(self):
body = self.rfile.read("0")
self.send_response(200)
self.send_header("Content-type", "application/xml")
self.end_headers()