Python 2.6 HTTPS客户端POST XML后响应状态与预期不符求助
解决方法
这个问题大概率是Python 2.6版本的httplib库的特性导致的:如果没有完整读取响应体,响应对象的状态码等元数据可能没有被正确解析,哪怕是无响应体的202请求也不例外。
你可以修改代码,在读取状态码前先调用read()方法读取响应内容(哪怕是空内容),同时记得使用完毕后关闭连接:
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() # 关键步骤:读取响应内容,确保响应元数据被正确解析 response_content = response1.read() print response1.status, response1.reason # 关闭连接,避免连接资源泄露 http_post.close()
另外,你也可以检查一下client_path的拼接是否和curl请求的路径完全一致——有时候路径错误会导致服务器返回默认的200响应(比如请求到了一个存在但非预期的端点),这也会造成状态码不符合预期的情况。
内容的提问来源于stack exchange,提问作者luker3
相关产品推荐
相关产品推荐

