使用httpc lib将大型http响应流到Erlang中的磁盘

使用httpc lib将大型http响应流到Erlang中的磁盘,erlang,streaming,otp,httpc,Erlang,Streaming,Otp,Httpc,httpc:request(get,{URL,[]},[],[{stream,FilePath}])返回{ok,saved_to_file},即使远程web服务在响应流传输过程中中途终止。我检查了一下,磁盘上的内容丢失了一大堆数据。这是一个已知的怪癖并且是预期的吗?我提交了一份报告,OTP团队的回答表明这是一个bug(至少对于当前的HTTP规范): 我认为这是因为客户端具有向后兼容性 服务器将关闭连接以指示所有数据 已经发送了。也许这应该只对老客户有条件 HTTP协议的版本,或者它可能会被删除。

httpc:request(get,{URL,[]},[],[{stream,FilePath}])
返回
{ok,saved_to_file}
,即使远程web服务在响应流传输过程中中途终止。我检查了一下,磁盘上的内容丢失了一大堆数据。这是一个已知的怪癖并且是预期的吗?

我提交了一份报告,OTP团队的回答表明这是一个bug(至少对于当前的HTTP规范):

我认为这是因为客户端具有向后兼容性 服务器将关闭连接以指示所有数据 已经发送了。也许这应该只对老客户有条件 HTTP协议的版本,或者它可能会被删除。。。 -英格拉·安德顿·安丁


我用的是OTP-22.1。我也尝试过
{sync,false}
选项,但没有什么不同。你可以使用
牛仔要求
,它对我有效。