我想发送分块的HTTP主体来测试我自己的HTTP服务器。 所以我编写了这个python代码:
import http.client
body = 'Hello World!' * 80
conn = http.client.HTTPConnection("some.domain.com")
url = "/some_path?arg=true_arg"
conn.request("POST", url, body, {"Transfer-Encoding":"chunked"})
resp = conn.getresponse()
print(resp.status, resp.reason)
我希望HTTP请求的主体是transferrd分块的, 但是我用Wireshark捕获网络包,HTTP请求的主体不被分块传输。
如何在python中通过http.client lib传输分块体?
好的,我明白了。
首先,编写我自己的分块编码函数。
然后使用putrequest()、putheader()、endheaders()和send()而不是request()
我建议,如果您已经知道数据的大小,比如给定的answer中的数据大小,那么您可以设置
Content-Length
并一次性将其全部发送回去,这就像您对conn.send
的单个调用所做的那样。当您不知道数据有多大(例如动态生成的内容)时,分块传输编码最有用。我修改了你的代码来说明:
相关问题 更多 >
编程相关推荐