擅长:python、mysql、java
<p>我建议,如果您已经知道数据的大小,比如给定的<a href="https://stackoverflow.com/a/9238565/241294">answer</a>中的数据大小,那么您可以设置<code>Content-Length</code>并一次性将其全部发送回去,这就像您对<code>conn.send</code>的单个调用所做的那样。</p>
<p>当您不知道数据有多大(例如动态生成的内容)时,分块传输编码最有用。我修改了你的代码来说明:</p>
<pre><code>import httplib
def write_chunk(conn, data):
conn.send("%s\r\n" % hex(len(data))[2:])
conn.send("%s\r\n" % data)
def dynamically_generate_data():
for i in range(80):
yield "hello world"
conn = httplib.HTTPConnection("localhost")
url = "/some_path"
conn.putrequest('POST', url)
conn.putheader('Transfer-Encoding', 'chunked')
conn.endheaders()
for new_chunk in dynamically_generate_data():
write_chunk(conn, new_chunk)
conn.send('0\r\n')
resp = conn.getresponse()
print(resp.status, resp.reason)
conn.close()
</code></pre>