我正在尝试使用headers["Transfer-encoding"] = "chunked"
通过请求模块发送发布请求,但我回来了:
<BODY><h2>Bad Request - Invalid Content Length</h2><hr><p>HTTP Error 400. There is an invalid content length or chunk length in the request.</p>
我正在发送一个json字符串。还提供了headers["Content-Type"] = "application/json"
。
有人知道我是否缺少某些设置吗?也许我应该在某个地方设置块大小?
分析附加到响应的请求的标头,实际上我得到的内容长度标头不为零。
我还尝试从json字符串创建一个自定义生成器,并将其作为data=
传递到post方法,但它似乎只是挂在那儿(也在给定的timeout=
之上)。
答案 0 :(得分:1)
您的错误表明您没有正确创建请求(这是4xx错误,而不是5xx错误,这表明服务器出现了问题)。
Transfer-Encoding: chunked
用于分块发送数据。当邮件的正文由未指定数量的块组成时,您可以用说-流的方式发送它们。我建议阅读this。
每个块的大小都应在数据前面。例如:
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
9\r\n
Some data\r\n
6\r\n
Python\r\n
如果要使用python请求模块发送分块的请求。您可能需要一个生成器方法。请参阅this。信息这么少,我无能为力。