在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将对应相同的字符串或其他数据。
这是否意味着以下两个是相同的? (它们在文档中似乎不一样)
http.client.HTTPConnection
HTTPConnection.endheaders(data)
,HTTPConnection.endheaders()
我完全糊涂了。
答案 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.