Python 3.3 HTTPConnection端头和发送数据

时间:2013-04-08 02:06:03

标签: python send httpconnection

Python 3.3/Lib/urllib/request.py下,在课程AbstractHTTPHandler(BaseHandler)中, 1252行

  

h.request(req.get_method(),req.selector,req.data,headers)

在课程Python 3.3/Lib/http/client.py的{​​{1}}下,在以下行中:

第1047行

  

def请求(self,method,url,body = None,headers = {}):

第1068行

  

def _send_request(self,method,url,body,headers):

第1087行

  

self.endheaders(主体)

HTTPConnection调用urllib.request.urlopen(req, data)中的request(method, url, body=None, headers={})时,正文上方和req.data将对应相同的字符串或其他数据。

这是否意味着以下两个是相同的? (它们在文档中似乎不一样)

  1. http.client.HTTPConnection
  2. HTTPConnection.endheaders(data)HTTPConnection.endheaders()
  3. 我完全糊涂了。

1 个答案:

答案 0 :(得分:1)

endheaders在内部(间接)使用send。差异可能在于表现。如果data是字节对象,则.endheaders(data)会尝试将标头和数据一起发送。见the comment in _send_output()

896         # If msg and message_body are sent in a single send() call,
897         # it will avoid performance problems caused by the interaction
898         # between delayed ack and the Nagle algorithm.